python基礎
列表和元組的區別
-
列表(list)
列表一旦創建了我們就可以根據自己的需要隨意改變他的內容;
>>> list=[1,2,3,4,5,6] >>> list[0]=8 >>> list[6]=0 >>> list [8, 2, 3, 4, 5, 6]
可以為列表添加新的數據:
>>> len(list) #查看這個列表中有多少數據 6 >>> list.append(7) #在列表尾插入 >>> list [8, 2, 3, 4, 5, 6, 7] >>> len(list) 7 >>> list.insert(3,10) #在列表任意位置插入數據,第一個參數表示索引,第二個參數表示插入的數據 >>> list [8, 2, 3, 10, 4, 5, 6, 7] >>>
這是因為list支持resize操作,當有新的數據添加進入列表時,如果大於當前的容量,就會開辟新的list,將原有的元素復制到新的list中,然后將原有的list刪除。
注意 利用切片取得的數據類型還會是list
>>> type(list[:2])
<class 'list'>
-
元組(Tuple)
元組是固定不可變的。這意味着一但元組被聲明,他的內容無法被修改,大小也無法改變。
>>> tuple=(1,2,3,4) >>> tuple (1, 2, 3, 4) >>> tuple[2] 3 >>> tuple[2]=8 Traceback (most recent call last): File "<pyshell#13>", line 1, in <module> tuple[2]=8 TypeError: 'tuple' object does not support item assignment
雖然tuple不支持改變大小,但是我們可以將兩個tuple合並起來。
>>> t=(5,6,8,6) >>> t+tuple (5, 6, 8, 6, 1, 2, 3, 4)
與list.append比較list添加元素的時間復雜讀為O(1),而tuple這種方式的時間復雜度為O(n)
-
總結
- 列表是動態數組,它們不可變且可以重設長度(改變其內部元素的個數)。
- 元組是靜態數組,它們不可變,且其內部數據一旦創建便無法改變。
- 元組緩存於Python運行時環境,這意味着我們每次使用元組時無須訪問內核去分配內存。