1. 程式人生 > >列表list & 元組tuple

列表list & 元組tuple

1. 列表

list = [val1, val2, val3, val4]

  • 列表中的每一個元素都是可變的(可刪除,新增,修改元素)
  • 列表中的元素是有序的(可以通過分片索引訪問指定元素)
  • 列表中的元素可以是Python中的任何物件

1.1 列表的更新

對序列的基礎操作(分片,索引,相加,乘法)也都同樣適用於列表,此外還有一些序列中沒有的方法,可用來更新列表

  1. 元素賦值
a = [1,2,3,2,1]
a[1] = 10
print(a)
>>> [1,10,3,2,1]

不能為一個不存在的元素賦值(即:索引的位置在列表中必須存在)

  1. 增加元素 append方法 list.append(obj)
a = [1,2,3,2,1]
a.append(10)
print(a)
>>> [1,2,3,2,1,10]
  1. 刪除元素 del
a = [1,2,3,2,1]
del a[2]
print(a)
>>> [1,2,2,1]
  1. 分片賦值
show = list('hi,boy')
print(show)
>>> ['h','i',',','b','o','y']
show[3:] = list('man')
print(show)
>>> ['h','i',',','m','a','n']

分片賦值可以使用與原序列不等長的序列將分片替換:

s = list('hi')
s[1:]= list('ello')
print(s)
>>> ['h','e','l','l','o']

分片賦值還可以在制定位置插入新元素(不替換原有元素):

b = list('女排奪冠了')
b[2:2] = list('奧運會')
print(b)
>>> ['女','排','奧','運','會','奪','冠','了']

1.2 巢狀列表

在列表中可以鑲嵌列表,鑲嵌的列表取出後還是列表

field = ['a','b','c']
num = ['1','2','3']
mix = [field, num]
print(mix) >>> [['a','b','c'],['1','2','3']] mix[0] = ['a','b','c']

1.3 列表方法

方法可以理解為函式的一類分支。基本上遵從 物件.方法(引數) 這一格式

  1. count 用於統計某個元素在序列/列表中出現的次數 list.count(obj)
mix = [[1,3],5,6,[1,3],2]
print(mix.count([1,3]))
>>> 2
  1. extend 用於在序列/列表末尾一次性追加多個值 list.extend(obj/seq)
mix = [[1,3],5,6,[1,3],2]
mix.extend([[2,5,6]])
print(mix)
>>> [[1, 3], 5, 6, [1, 3], 2, [2, 6, 5]]
xim = [1,2,3,4]
mix.extend(xim)
print(mix)
>>> [[1, 3], 5, 6, [1, 3], 2, [2, 6, 5],1,2,3,4]
  1. index 用於從序列/列表中找出某個值第一個匹配項的索引位置 list.index(obj)
mix = [[1,3],5,6,[1,3],2]
print(mix.index([1,3]))
>>> 0
  1. insert 用於將物件插入列表指定位置 list.insert(index,obj)
mix = [[1,3],5,6,[1,3],2]
mix.insert(1,'A')
print(mix)
>>> [[1,3],'A',5,6,[1,3],2]
  1. pop 用於移除列表/序列中的一個元素(預設最後一個),並且返回改元素的值 list.pop(obj = list[-1])
mix = [[1,3],5,6,[1,3],2]
mix.pop(0)
print(mix)
>>> [5, 6, [1, 3], 2]
xim = mix
xim.pop()
print(xim)
>>> [5, 6, [1, 3]]
  1. remove 用於移除列表中某個值得第一個匹配項 list.remove(obj)
mix = [[1,3],5,6,[1,3],2]
mix.remove([1,3])
print(mix)
  1. append 用於在列表末尾新增新的元素 list.append(obj)
a = [1,2,3,2,1]
a.append(10)
print(a)
>>> [1,2,3,2,1,10]
  1. reverse 用於反向列表中的元素 list.reverse()此方法可以不傳入引數
mix = [[1,3],5,6,[1,3],2]
mix.reverse()
print(mix)

a = [[1,3],5,6,[1,3],2]
print(list(reversed(a)))  #reversed函式並不返回列表,而是返回一個迭代器物件.
                          # 需要用list函式把返回值的對這項轉換為列表
  1. clear 用於清空列表 list.clear()

  2. copy 用於複製列表 list.copy()

  3. sort 用於對元列表進行(正向)排序。 如果設定引數,就按照引數指定的比較方法隱進行排序 list.sort(func)

mix = [5,6,2]
mix.sort()
print(mix)
>>> [2,5,6]

另外,sort方法還有兩個可選引數(key 和 reverse)

field = ['study','python','is','happy']
field.sort(key=len)
print(field)
>>> ['is', 'study', 'happy', 'python']
field.sort(key=len,reverse=True)
print(field)
>>> ['python', 'study', 'happy', 'is']

2. 元組

Tuple = (val1,val2,val3,val4)

Python中的元組可以被視為更為穩定的列表

  • 一旦初始化,元組中的元素不能被修改
  • 列表中存在的方法在元組上皆不可用
  • 元組可以被索引,擷取和檢視,方式與列表一致

2.1 tuple函式

tuple函式的功能和list函式基本一致,都以一個序列作為引數,並把它轉換為元組

print(tuple(['hello','python']))
>>> ('hello','python')
print(tuple('hello'))
>>> ('h','e','l','l','o')

2.2 元組的基本操作

  1. 訪問
a = ('e','g','d',1,2)
print(a[2])
>>> d
  1. 修改/新增 元組中的元素不能修改,但可以通過 + 進行連線補充
a = ('e','g','d',1,2)
b = ('v','12')
print(a + b)
>>> ('e','g','d',1,2,'v','12')
  1. 刪除 del 用法參照列表方法 del tuple,刪除整個元組

2.3 元組的內建函式

參考序列內建函式(len, max, min)