Python今日學習內容:多維列表&元組&字典&序列解包
注意事項都在注解中:
# 多維列表
# 二維列表
# 一維列表可以幫我們存儲一維,線性的數據
# 二維列表可以幫助我們存儲二維,表格的數據
a = [[10, 20, 30], [30, 40, 60]]
# 打印結果為:20
print(a[0][1])
for x in range(2):
for n in range(3):
print(a[x][n],end="\t")
print()
# 元組 tuple
# 列表屬於可變序列,可以任意修改列表中的元素。元組屬於不可變序列,不能修改元組中的元素。因此,元組沒有增加元素,修改元素,刪除元素的方法
# 因此,我們只需要學習元組的創建和刪除,元組中元素的訪問和計數即可。元組支持以下操作:1.索引訪問 2.切片操作 3.連接操作
# 4.成員關系操作 5.比較運算操作 6.計數:元組長度len(),最大值max(),最小值min(),求和sun()等
#
# 元組的創建:
# 1.通過()創建元組。小括號可以省略
# 如果元組只有一個元素,則必須後面加逗號。這是因為解釋器會把(1)解釋為整數1 (1,)解釋為元組
a = (10, 20, 30)
# 打印結果為:<class 'tuple'>
print(type(a))
# 2.通過tuple()創建元組 tuple(可迭代的對象)
b = tuple(range(3))
# 打印結果為:(0, 1, 2)
print(b)
b = tuple([2, 3, 5])
# 打印結果為:<class 'tuple'>
print(type(b))
# tuple()可以接收列表,字符串,其他序列型號,迭代器等生成元組。
# list()可以接收元組,字符串,其他序列類型,迭代器等生成列表
# 元組的元素訪問和計數
c = (1, 2)
d = (3, 4)
# 打印的結果為:(1, 2, 3, 4)
print(c+d)
# 元組的元素訪問和列表一樣,只不過返回的仍然是元組對象
a = (1, 2, 4, 10, 100)
# 打印的結果為:2
print(a[1])
# 列表關於排序的方法list.sorted()是修改原來列表對象,元組沒有該方法。如果要對元組拍排序,只能使用內置函數sorted(tplobj),並生成新的列表對象
# 打印的結果為:[1, 2, 4, 10, 100]
print(sorted(a))
# zip
# zip(列表1,列表2,....)將多個列表對應位置的元素組合為元組,並返回這個zip對象.
a = [10, 20]
b = [30, 40]
c = [50, 70]
d = zip(a, b, c)
print(list(d))
# 生成器推導式創建元組
s = (x*2 for x in range(5))
# 打印結果為:(0, 2, 4, 6, 8)
print(tuple(s))
# 打印結果為:()
# 只能訪問異常元素,第二次就為空了。需要再生成一次
print(tuple(s))
# 元組總結
# 1.元組的核心特點是:不可變序列
# 2.元組的訪問和處理速度比列表快
# 3.與整數和字符串一樣,元組可以作為字典的鍵,列表則永遠不能作為字典的鍵使用
#
#
# 字典
# 字典是“鍵值對”的無序可變序列,字典中的每一個元素都是一個“鍵值對”,包含:“鍵對象”和“值對象”。
# 可以通過“鍵對象”實現快速獲取,刪除,更新對應的“值對象”。
# 一個典型的字典的定義方式:
a = {
'name': 'gao', "age": 18}
# 打印的結果為:{'name': 'gao', 'age': 18}
print(a)
# 字典的創建
# 1.我們可以通過{},dict()來創建字典對象。
b = dict(name="xs", age=18)
# 打印的結果為: {'name': 'xs', 'age': 18}
print(b)
# 空的字典對象
c = {
}
d = dict()
# 2.通過zip()創建字典對象
k = ['name', 'age']
v = ['xs', 15]
d = dict(zip(k, v))
# 打印的結果為:{'name': 'xs', 'age': 15}
print(d)
# 3.通過fromkeys 創建值為空的字典
e = dict.fromkeys(['name', 'age'])
# 打印結果為:{'name': None, 'age': None}
print(e)
# 字典元素的訪問
# 1.通過[鍵]獲得“值”.若鍵不存在,則拋出異常
a = {
'name': 'gao', "age": 18}
# 打印結果為:gao
# print(a["name"])
# 2.通過get()方法獲得“值”.推薦使用。 優點是:指定鍵不存在,返回node;也可以設指定鍵不存在時默認返回的對象。推薦使用get()獲取“值對象”
# 打印結果為:gao
# print(a.get("name"))
# 打印結果為:None 不存在
print(a.get("123"), "不存在")
# 3.列出所有的鍵值對
# 打印結果為: dict_items([('name', 'gao'), ('age', 18)])
print(a.items())
# 4.列出所有的鍵,列出所有的值
# 打印結果為:dict_keys(['name', 'age'])
print(a.keys())
# 打印的結果為:dict_values(['gao', 18])
print(a.values())
# 5.len()鍵值對個數
# 打印的結果為:2
print(a.__len__())
# 6.檢測一個“鍵"是否在字典中
# 打印的結果為:True
print("name" in a)
# 字典元素添加,修改,刪除
a = {
'name': 'gao', "age": 18}
# 1.給字典新增“鍵值對”。如果“鍵”已經存在,則覆蓋舊的鍵值對;如果“鍵不存在”,則新增“鍵值對”
# 打印結果為:{'name': 'gao', 'age': 17, 'cs': '123'}
a["cs"] = "123"
a['age'] = 17
print(a)
# 2.使用upate()將新字典中所有鍵值對全部添加到舊字典上,如果key有重復,則直接覆蓋
b = {
"name": "da", "age": 1, "sex": "男"}
a.update(b)
print(a)
# 3.字典中元素的刪除,可以使用del()方法;或者clear()刪除所有鍵值對;pop()刪除指定鍵值對,並返回對應的“值對象”
del(a['name'])
# 打印的結果為:{'age': 1, 'cs': '123', 'sex': '男'}
print(a)
a.pop("cs")
# 打印的結果為:{'age': 1, 'sex': '男'}
print(a)
a.clear()
# 打印的結果為:{}
print(a)
# 4.popitem():返回並刪除最後一位的鍵值對
a = {
'name': 'gao', "age": 18, "ces": 22}
a.popitem()
print(a)
a.popitem()
print(a)
# 序列解包
# 序列解包可以用於元組,列表,字典,序列解包可以讓我們方便的對多個變量賦值
x, y, z = (20, 30, 10)
# 打印結果為:20
print(x)
# 30
print(y)
# 10
print(z)
# 序列解包用於字典時,默認是對“鍵”進行操作;如果需要對鍵值對操作,則需要使用items();如果需要對“值”進行操作,則需要使用values();
a = {
'name': 'gao', "age": 18, "ces": 22}
# 默認對鍵進行操作
name, age, ces = a
# 打印的結果為:
# name
# age
# ces
print(name)
print(age)
print(ces)
name, age, ces = a.values()
# 打印的結果為:
# gao
# 18
# 22
print(name)
print(age)
print(ces)