1. 程式人生 > >Python 基礎——tuple與list、append與extend

Python 基礎——tuple與list、append與extend

tuple可讀不可寫,tuple的元素不可作左值,list反之

>>>t = (1, 2, 3)
>>>t[:]
(1, 2, 3)

>>>t[0] = 4
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

>>>l = [1, 2, 3]
>>>l[:]
[1, 2
, 3] >>>l[0] = 4

兩者的成員函式:tuple幾乎沒什麼成員函式,list卻有著豐富的成員函式:

>>>t = (1, 2, 3, 3, 4)
>>>dir(t)
# 有意義的成員函式只有`count`、`index`
# count,記錄元組中某一元素出現的次數,index返回值所在的下標
>>>t.count(3)
2
>>>t.count(2)
1
>>>t.index(4)
4

>>>l=[1, 2, 3, 4]
dir(l)

這裡寫圖片描述

這裡寫圖片描述
# extend見名知意,擴充套件,既然存在我們廣泛使用`[].append(*)`函式,`extend`
# 從這也意義上說,`tuple`更像是`C`語言中的一維陣列,長度在初始化時即已確定,
# 而`vector`(以`C++STL`)為例,也存在著`push_back()`之類的函式,可動態擴從其大小

>>>l = [1, 2, 3]
>>>l.extend(4)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int'
object is not iterable # 這點可見extend與append函式的區別 >>>l.extend([4, 5]) >>>l [1, 2, 3, 4, 5] >>>l.append([6, 7]) >>>l [1, 2, 3, 4, 5, [6, 7]] # 也即每次append新增的是一個元素(作為一個整體新增進去), # 而這個元素的型別不定,可以是整型,也可以是字串型別, # 而extend的引數必須是可迭代的型別,這樣新增的是其中的每一個元素, # 而不是作為整體進行新增

彼此間型別轉換

>>>l = [1, 2, 3, 3, 4]
>>>tuple(l)
(1, 2, 3, 3, 4)
>>>t = (1, 2, 3, 3, 4)
>>>list(t)
[1, 2, 3, 3, 4]

>>>(l)
[1, 2, 3, 3, 4]
>>>[t]                 # 由元組組成的list
[(1, 2, 3, 3, 4)]

tuple的切片還是tuplelist的切片還是list(這可能是一句廢話)

>>>type(t[0:2])
<class 'tuple'>
>>>type(l[0:3])
<class 'list'>