區別
list可以修改,而tuple一旦定義便不可修改
list
list[-1]
直接取最後一個元素,同理list[-2]
。。。可以取倒數第二。。。等的元素
list.append()
追加元素到末尾
list.insert()
插入元素到某位置
list.pop(i)
彈出i位置的元素
tuple
一旦初始化便不可修改,但若其中有list元素,可對list進行修改
- 空的tuple:
t=()
- 僅有1個元素“逗號是關鍵”:
t=(1,)
dict
類似於C++中的map
,使用KEY-VALUE存儲,具有極快的查找速度(因爲存在索引表)
- 初始化:
>>>d={'a':96,'b':22,'c':15}
>>>d['a']
96
>>>d['b']=25 #通過key直接存入數據
>>>d['b']
25
- 其他函數:
>>>‘e’ in d #判斷KEY是否存在
False
>>>d.get('e') #判斷KEY是否存在,不存在返回NONE(在python環境中不顯示結果)
>>>d.get('e',-1) #指定VALUE
>>>d.pop('a') #刪除指定KEY-VALUE
- 特點:
- dict的key值爲不可變對象:字符串、整數等都是不可變的,而List可變,不可作爲key
- 空間換取時間
set
==與dict類似,爲一組KEY的集合,不存儲VALUE,且無重複的KEY
>>> s = set([1, 2, 2, 3]) #提供一個list作爲輸入集合
>>> s
{1, 2, 3} #重複元素被過濾
>>> s.add(4) #添加
>>> s
{1, 2, 3, 4}
>>> s.remove(4) #刪除
>>> s
{1, 2, 3}
set
與dict
唯一區別:沒有存儲對應的value,其他原理一樣
set=[1,2,3]
s1=set([1,2,3])
Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: 'list' object is not callable #set被定義爲{list}類型所導致的錯誤
if
if
語句的特點:從上往下判斷,若某個判斷上爲true,則執行該語句內容,並忽略之後的elif
和else
- 加入用
input
輸入做判斷;例如:
s=input('birth')
if birth<2000:
...
會出現錯誤;
因爲input()
返回的數據類型爲str
,必須用強制類型轉換!
for
for x in ...
循環就是把每個元素帶入變量x,然後執行縮進塊的語句for x in range(n)
把0到n-1的n個數分別帶入xwhile
爲條件判斷
while 條件:
縮進塊語句
break
結束整個循環;continue
結束當前循環;不要濫用這兩個,會造成代碼執行邏輯分叉過多
議不可變對象
- str是不可變對象,如下代碼
>>> a = 'abc'
>>> a.replace('a', 'A') #replace作用在a的內容上,並從新創建了一個新字符串,返回該值
'Abc'
>>> a #並未改變a的內容
'abc'
- list是可變對象,如下
>>> a = ['c', 'b', 'a']
>>> a.sort()
>>> a
['a', 'b', 'c']
所以,對於不變對象來說,調用對象自身的任意方法,也不會改變該對象自身的內容。相反,這些方法會創建新的對象並返回,這樣,就保證了不可變對象本身永遠是不可變的。