首頁  >  文章  >  後端開發  >  列表、元組、字串是python的什麼序列?

列表、元組、字串是python的什麼序列?

青灯夜游
青灯夜游原創
2020-08-29 16:20:4923232瀏覽

列表、元組、字串是python的有序序列;其中列表是可變對象,元組和字串則是不可變對象。序列中的每個元素都分配一個數字,即它的位置,或索引,第一個索引是0,第二個索引是1,依此類推。

列表、元組、字串是python的什麼序列?

序列是Python中最基本的資料結構。序列中的每個元素都分配一個數字 - 它的位置,或索引,第一個索引是0,第二個索引是1,依此類推。

序列都可以進行的操作包括索引,切片,加,乘,檢查成員。此外,Python已經內建確定序列的長度以及確定最大和最小的元素的方法。

列表、元組、字串是python的有序序列;其中列表是個可變對象,元組和字串則是不可變對象。

列表(list)

列表是包含0個或多個物件引用的有序序列,支援與字串以及元組一樣的分片與步距語法。與字串以及元組不同的是,列表是可變的,因此,我們可以對列表中的項目機芯刪除或替換,插入、替換或刪除列表中的分片。

list資料類型可以作為函數進行調用,list()--不帶參數進行調用是將返回一個空列表;帶一個list參數時,返回該參數的淺拷貝;對任意其他參數,則嘗試將給定的物件轉換為清單。此函數值接受一個參數的情況。列表也可以不使用list()函數創建,空列表可以使用空的方括號來創建,包含一個或多個項目的列表則可以使用逗號分隔的資料項(包含在[]中)序列來創建。

清單提供的方法:

列表、元組、字串是python的什麼序列?

任意可迭代的(列表、元組等)資料型別都可以使用序列拆分運算子進行拆分,即:* 。用於賦值運算子左邊的兩個或多個變數時,其中的一個使用*進行引導,資料項將賦值給該變量,而所有剩餘的資料項將賦值給帶星號的變量,下面給出一些實例:

列表、元組、字串是python的什麼序列?

以這種方式使用序列拆分運算元時,表達式*rest以及類似的表達式稱為帶星號的表達式。

python還有一個相關的概念:有星號的參數。

列表、元組、字串是python的什麼序列?

對列表中的資料項,科研在其上進行迭代處理,使用的語法格式是 for item in L:。如果需要改列表中的資料項,那麼使用的慣用方法如下:

for i in range(len(L)):
L[i] = process(L[i])

  由於列表支援分片,因此在幾種情況下,使用分片或某種列表方法可以完成相同的功能,如:給定列表woods=['Cedar','Yew','Fir'],我們可以以如下的兩種方式擴展列表:

woods+=['Kauri','Larch']    | woods.extend(['Kauri','Larch'])

   對上面兩種方法,所得結果都是列表['Cedar','Yew','Fir','Kauri','Larch']。

  使用list.append()方法,可以將單一資料項目新增至清單尾部。使用list.insert()方法(或賦值給一個長度為0的分片),可以將資料項目插入到清單內的任何索引位置。例如,給定列表woods=['Cedar','Yew','Fir','Spruce'],我們可以在索引位置2處插入一個新的資料項(也就是作為該列表的第三項),以下兩種方法都可以實現:

woods[2:2] = ['Pine'] |  woods.insert(2,'Pine')

   上面兩種方法所得的結果都是列表['Cedar','Yew','Pine','Fir','Spruce'].

   透過對特定索引位置處的物件進行賦值,可以將清單中的單一資料項目進行替換,例如,woods[2]='Redwood'。將iterable賦值給分片,可以替換整個分片,例如,woods[1:3]=['Spruce','Sugi','Rimu'],並且分片月iterable並不必須是等長的。在所有這些情況下,都會刪除分片的資料項,並插入iterable的資料項。如果iterable包含的項數比要替代的分片包含的項數少,那麼這一操作會使類別變短;反之,則使得列表變成。如下範例:

列表、元組、字串是python的什麼序列?

 對於複雜的列表,可以使用for...in 循環創建,如,假定需要產生給定時間範圍內的閏年列表,可以使用如下語句:

 leaps = []
 for year in range(1900,1940):
  if (year%4 == 0 and year %100 !=0) or (year % 400 ==0):
    leaps.append(year)

兩種表達式:

expression for item in iterable
    expression for item in  iterable if condition

元組(tuple)

#

元组是个有序的序列,其中包含0个或多个对象引用。元组支持与字符串一样的分片与步距的语法,这使得从元组中提取数据项比较容易。元组也是固定的,不能替换或删除其中包含的任意数据项。如果需要修改有序序列,我们应该使用类别而非元组。如果要对元组进行修改,可以使用list()转换函数将其转换为列表,之后在产生的列表之上进行适当修改。

tuple数据类型可以作为一个函数进行调用,tuple()---不指定参数时将返回一个空元组,使用tuple作为参数时将返回该参数的浅拷贝,对其他任意参数,将尝试把给定的对象转换为tuple类型。该函数最多只能接受一个参数。元组也可以使用tuple()函数创建,空元组是使用空圆括号()创建的,包含一个或多个项的元组则可以使用逗号分隔进行创建。

元组只提供了两种方法:t.count(x),返回对象x在元组中出现的次数;t.index(x),返回对象在元组t中出现的最左边位置。

元组可以使用操作符+(连接)、*(赋值)与 [](分片),要可以使用in 与not in 来测试成员关系。

下面给出几个分片实例:

列表、元組、字串是python的什麼序列?

上面这些处理过程对字符串、列表以及人员其他序列类型都是一样的

列表、元組、字串是python的什麼序列?

要构成一个亿元组,逗号是必须的,这里red字符串地方我们必须同时使用逗号与圆括号。

      1.1 命名的元组

       命名的元组与普通元组一样,有相同的表现特征,其添加的功能就是可以根据名称引用元组中的项,就像根据索引位置一样,这一功能使我们可以创建数据项的聚集。

       collections 模块提供了 namedtuple()函数,该函数用于创建自定义的元组数据类型,例如:

列表、元組、字串是python的什麼序列?

  collections.namedtuple()的第一个参数是想要创建的自定义元组数据类型的名称,第二个参数是一个字符串,其中包含使用空格分割的名称,每个名称代表该元组数据类型的一项。该函数返回一个自定义的类(数据类型),用于创建命名的元组。因此,这一情况下,我们将sale与任何其他python类一样看待,并创建类型为sale的对象,如:

列表、元組、字串是python的什麼序列?

这里我们厂家了包含两个sale项的列表,也就是包含两个自定义元组。我们也可以使用索引位置来引用元组中的项----比如,第一个销售项的价格为sales[0][-1],但我们呢也可以使用名称进行引用,这样会更加清晰:

列表、元組、字串是python的什麼序列?

命名的元组提供的清晰与便利通常都是有用的,比如,下面另一个例子:

列表、元組、字串是python的什麼序列?

私有方法namedtuple._asdict()返回的是键-值对的映射,其中每个键都是元组元素的名称,值则是对应的值,我们使用映射拆分将映射转换为str.format()方法的键-值参数。

“{manufacturer} {model}”.format(**aircraft._asdict())

字符串

str,字符串在python中是有序序列,这意味着字符串在python中可以做很多操作,比如slice。不过有一点是字符串中某部分无法进行修改,因为是不可变对象。

字符串经常碰到的一个问题就是怎么把 字符串倒序输出。

这时候我们就可以把slice用到字符串中,编写一个倒序输出的函数如下:

def reverse(x):
    if not isinstance(x,basestring):
       raise TypeError ("bad type");
    else:
        return x[::-1]

isinstance是用来判断参数是否是字符串,如果不是的话将会报错。

basestring是str和unicode的父类,可以用来分辨是不是字符串的类型。

推荐学习:Python视频教程

以上是列表、元組、字串是python的什麼序列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn