【Python_029】內建資料結構,列表 | 字典 | 集合 | 元組

Haaaley發表於2020-10-22

最近重學python基礎,感覺基礎知識還是得紮實才能走得更遠,整理了一些筆記和大家分享。參考書目:《Head First Python》

列表

  • remove只能在知道要刪的值時使用, pop取可選索引值作為引數
test = [1,2,3,4]
test.remove(3)
test

'''
[1,2,4]
'''

test.pop(1)
test
'''
#pop 不指定引數則預設彈出最後一個。 
pop的元素可被直譯器回收,也就是可被賦值 如 x = test.pop(),但remove不可以做到
[1,4]
'''
  • extend是將列表中所有元素依次加在最後,append是將整個列表加在最後,insert(index,value)
x1 = [1,2,3]
x1.append([4,5])
x1
'''
[1, 2, 3, [4, 5]]
#如果append([]),會把一個空列表作為元素加在最後,變成[1,2,3,[]]
'''

x2 = [1,2,3]
x2.extend([4,5])
x2
'''
[1, 2, 3, 4, 5]
#如果extend([]),和原來沒啥變化
'''
x2.insert(2,6)
x2
'''
[1,2,6,3,4,5]
'''

  • 列表的複製

    賦值操作符不能把一個列表複製到另一個列表。拷貝值用list.copy()

    a = [1,2,3]
    b = a
    b.append(4)
    a
    ''' [1,2,3,4]'''
    a.append(5)
    b
    ''' [1,2,3,4,5]'''
    #賦值讓兩個變數指向同一組資料,共享列表引用
    c = b.copy()
    b.append(6)
    c
    '''[1,2,3,4,5]'''
    

字典

  • 字典無序。鍵值對是關鍵。字典查詢速度快
for k,v in dic.items():
	print (f"{k} is {v}.")
  • **字典的鍵必須初始化。**setdefault方法,防止KeyError(如果試圖訪問一個不存在的鍵的關聯值會報錯)
vowels = ['a','e','i','o','u']
word = input("Input a word: ")
found = {}

for letter in word:
    if letter in vowels:
        found.setdefault(letter,0) #用於初始化,如果該鍵已經存在,則這行程式碼沒有影響
        found[letter] +=1

for k,v in found.items():
    print(f"{k} has appeared {v} times")

'''
Input a word: haaaley
a has appeared 3 times
e has appeared 1 times
'''

集合

  • 集合用大括號表示, 也可以使用set(str),把字串裡每個字母變成一個集合元素
  • 集合拼接用union, set1.union(set(str2)), 結果也是一個集合
  • 比較兩個集合中差異,set_a.difference(set_b)
  • 集合取交集, set_a.intersection(set_b)
  • 空集合為set(), 儘管集合用{}表示, 但{}被認為是空字典
#判斷詞語中含有哪些母音的程式可以簡化成如下(不需要加if判斷)
vowel = set('aeiou')
word = input("Input a word: ")
result = set(word).intersection(vowel)
for letter in result:
    print(letter)

元組

  • 元組不可變(優點是效能高,列表可變但可變總會帶來記憶體的影響)
  • 元組在構建時必須含有一個逗號。(‘a’) 是字串,(‘a’,)為元組

函式

  • 函式註解
def search4vowels(word:str)->set: #幫助註解引數型別以及返回型別
    '''this is a docstring'''
    vowels = set('aeiou')
    return vowels.intersection(set(word))

help(search4vowels) #可返回函式註解以及docstring

相關文章