list和tuple的使用技巧和難點,以及不可變對象!!

區別

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
  • 特點:
  1. dict的key值爲不可變對象:字符串、整數等都是不可變的,而List可變,不可作爲key
  2. 空間換取時間

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}
  • setdict唯一區別:沒有存儲對應的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,則執行該語句內容,並忽略之後的elifelse
  • 加入用input輸入做判斷;例如:
s=input('birth')
if birth<2000:
...

會出現錯誤;
因爲input()返回的數據類型爲str,必須用強制類型轉換!

for

  • for x in ...循環就是把每個元素帶入變量x,然後執行縮進塊的語句
  • for x in range(n)把0到n-1的n個數分別帶入x
  • while爲條件判斷
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']

所以,對於不變對象來說,調用對象自身的任意方法,也不會改變該對象自身的內容。相反,這些方法會創建新的對象並返回,這樣,就保證了不可變對象本身永遠是不可變的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章