學Python劃重點二(列表、元組、字典、集合)

前言:
這些知識點內容都是老師上課內容,我只是總結一下,方便自己學習查閱!

序列 是一種可迭代的、元素有序、可以重複出現的數據結構,序列可以通過索引訪問元素 。
序列 包括的結構有:字符串(str) 、字節(bytes) 、範圍(range) 、元組(tuple) 、列表(list) 。

一、列表

列表(list) 也是一種序列結構,但與元組不同,列表具有 可變性 ,可以追加、插入、刪除和替換列表中的元素。

1. 常用列表操作

在這裏插入圖片描述
在這裏插入圖片描述

a_list.sort(key = lambda x:len(str(x))) #按轉換成字符串的長度排序
lst.sort(reverse=True) ---------- 永久性排序
sorted(lst,reverse=True) ---------- 臨時排序
len(lst) -------- 列表長度
del lst[0] ---------- 刪除元素

2. 遍歷列表

for item in lst:
	print(item)
>>> a_list = [3, 5, 7]
>>> a_list = aList * 3
>>> a_list
[3, 5, 7, 3, 5, 7, 3, 5, 7]

3. 創建列表

a_list = [] # 創建空 列表
b = list() # 創建空
c_list = ['a', 'b', 'mpilgrim', 'z', 'example']
d_list = list((3,5,7,9,11))
list(range(1,10,2))
list('hello world')

4. 列表推導式

根據數據結構的不同可分爲 列表推導式集合推導式字典推導式
在這裏插入圖片描述
舉例:

>>> [(x, y) for x in range(3) for y in range(3)]
[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]

>>> vec = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> result = [num for elem in vec for num in elem]
>>> result
[1, 2, 3, 4, 5, 6, 7, 8, 9]

5. 切片

切片 操作不會因爲下標越界而拋出異常,而是簡單地在列表尾部截斷或者返回一個空列表,代碼具有更強的健壯性 。切片 作用於列表時 功能 非常 強大 。可以使用切片來截取列表中的任何部分,得到一
個新 列表 ; 也 可以通過切片來修改和刪除列表中部分 元素 ; 甚至 可以通過切片操作爲列表對象增加元素。

>>> a_list = [3, 5, 7]
>>> a_list[len(a_list):] = [9] # 在尾部追加 元素
>>> a_list
[3, 5, 7, 9]

>>> a_list[:3] = [1, 2, 3]  # 替換前3 個 元素
>>> a_list
[1, 2, 3, 9]

>>> a_list[:3] = []  # 刪除前3 個 元素
>>> a_list
[9]
>>> a_list = list(range(10))
>>> a_list
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a_list[::2] = [0] * 5  # 替換偶數位置上的 元素
>>> a_list
[0, 1, 0, 3, 0, 5, 0, 7, 0, 9]
>>> a_list[::2] = [1] * 3 # 切片不連續,兩個元素個數必須一樣 多
ValueError: attempt to assign sequence of size 3 to
extended slice of size 5
# 使用del 與切片結合來刪除列表元素 。
>>> a_list = [3, 5, 7, 9, 11]
>>> del a_list[:3]  # 刪除前3 個 元素
>>> a_list
[9, 11]
>>> a_list = [3, 5, 7, 9, 11]
>>> del a_list[::2]  # 刪除偶數位置上的 元素
>>> a_list
[5, 9]

二、元組

當 一個元組只有一個元素時,後面的逗號不能省略。

接收拆包元素的變量個數 應該小於等於 元組個數。可以使用下畫線指定哪些元素不取值。

a = ('Hello', 'World', 1, 2, 3)
str1, _, n1, n2, _ = a
str1, str2, *n = a

三、字典

字典(dict) 是可迭代的、可變的數據結構,通過鍵來訪問元素。字典結構比較複雜,包含兩部分:鍵和值。定義字典時,每個元素的鍵和值用冒號分隔,元素之間用逗號分隔,所有的元素放在一對大括號“{}” 中。

1. 創建字典

>>> x = dict() # 空 字典
>>> x
{}
>>> x = {}  # 空 字典
>>> x
{}
>>> a_dict = {'a':11, 'b':31}
>> a_dict
{'a': 11, 'b': 31}
>>> keys = ['a', 'b', 'c', 'd']
>>> values = [1, 2, 3, 4]
>>> x = dict(zip(keys, values))
>>> x
{'a': 1, 'c': 3, 'b': 2, 'd': 4}
>>> x = dict(name='Dong', age=37)
>>> x
{'age': 37, 'name': 'Dong'}
以 給定內容爲鍵,創建值爲空的字典。例如 :
>>> x = dict.fromkeys(['name', 'age', 'sex'])
>>> x
{'age': None, 'name': None, 'sex': None}

2. 訪問字典

  1. students[“Ning”]
  2. get(key[, default]) :通過鍵返回值,如果鍵不存在返回默認值。
  3. items() :返回字典的所有鍵- 值對。
  4. keys() :返回字典的鍵。
  5. values() :返回字典的值。

setdefault() 方法,x.setdefault(‘color’, ‘black’)第一個參數是要檢查的鍵;第二個參數,是如果該鍵不存在時要設置的值。如果要檢查的鍵存在,該方法就會返回鍵的值

3. 遍歷列表

  1. for k,v in students: ------ 遍歷鍵值對
  2. for k in students.keys(): --------- 遍歷所有鍵
  3. for k in students: ----------------遍歷所有鍵
  4. for v in students.values(): -----------遍歷所有值

4. 字典轉換爲列表

>>> d = {'name':'Zara','age':7,'class':'First'}
>>> print(list(d))
['name', 'age', 'class']
>>> print(list(d.keys()))
['name', 'age', 'class']
>>> print(list(d.values()))
['Zara', 7, 'First']
>>> print(list(d.items()))
[('name', 'Zara'), ('age', 7), ('class', 'First')]

5. 字典中找最大值、最小值 所對應的鍵

>>> dog = {'dog-dog': 33, 'dog-cat': 36,
'dog-car': 41, 'dog-bird': 42}
>>> min(dog, key=dog.get)
'dog-dog'
>>> max(dog, key=dog.get)
'dog-bird'

6. 字典推導式

>>> {i: str(i) for i in range(1, 5)}
{1: '1', 2: '2', 3: '3', 4: '4'}
>>> dict1 = {'one':1, 'two':2, 'three':3, 'four':4}
>>> dict2 = {k:v for k, v in dict1.items() if v %2 == 0}
>>> dict2
{'two': 2, 'four': 4}
>>> dict2 = {k:v for k, v in dict1.items() if v %2 == 0}
>>> dict2
{'two': 2, 'four': 4}

四、集合

集合(set) 是一種可迭代的、無序的、不能包含重複元素的數據結構。集合又分爲可變集合(set) 和不可變集合(frozenset) 。集合不是序列,序列強調的是有序,集合強調的是不重複。

1. 創建可變集合

創建不可變集合:a_set = frozenset({'a', 'b', 'c', 'd'})

>>> a_set = set(range(8,14))
>>> a_set
{8, 9, 10, 11, 12, 13}
>>> b_set = {3, 5}
>>> b_set
{3, 5}
>>> c_set = set([0, 1, 2, 3, 0, 1, 2, 3, 7, 8])
>>> c_set
{0, 1, 2, 3, 7, 8}
>>> d_set = set()  # 空集合
>>> d_set
set()

2. 修改可變集合

1 .add(obj) :增加元素。如果元素已經存在,則不能增加,但不會拋出錯誤 。

>>> a_set = {3, 7, 10, 5, 13}
>>> a_set.add(20)

2 .update(obj) :增加的對象可以是列表、字典等,且可以是多個,用逗號隔開 。

>>> a_set.update((-1, 40), [11, 23])

3 .remove(obj) :刪除元素。如果元素不存在 ,拋 出錯誤 。
4 .discard(obj) :刪除元素。如果元素不存在,不會拋出錯誤。
5 .pop() :隨機刪除一個元素。
6 .clear()

3. 集合推導式

>>> input_list = [2, 3, 2, 4, 5, 6, 6, 6]
>>> n_set = {x ** 2 for x in input_list}
>>> n_set
{4, 36, 9, 16, 25}

4. 集合操作

Python 集合支持並集、交集、差集等運算 。
>>> a_set = set([8, 9, 10, 11, 12, 13])
>>> b_set = {0, 1, 2, 3, 7, 8}
>>> a_set | b_set  # 並集
>>> a_set.union(b_set) # 並集
>>> a_set & b_set # 交集
>>> a_set.intersection(b_set) # 交集
>>> a_set - b_set # 差集
>>> a_set.difference(b_set)  #

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