03.從零開始學Python~列表,元組,字典,集合
本文是上一篇文章的後續,詳情點擊該鏈接
列表
用於存儲任意數目、任意類型的數據集合。
列表是內置可變序列,是包含多個元素的有序連續的內存空間。
話不多說,擼代碼~
創建序列
#創建序列
arr = [1,'小明',9.6,'A',[2,3,6,7,5]]
print(arr)
range()創建整數列表
range()可以幫助我們非常方便的創建整數列表。語法格式爲:
range([start,] end [,step])
a = list(range(10))
b = list(range(3,10))
c = list(range(1,20,2))
print("a = " , a)
print("b = " , b)
print("c = " , c)
由此可見,其語法格式是包頭不包尾
推導式生成列表
# x 從 0 開始 循環5次 創建 5 個 * 2 的元素
a = [x * 2 for x in range(0,5)]
print(a)
還可以通過if過濾
a = [x * 2 for x in range(100) if x % 6 == 0]
print(a)
乘法擴展
a = [1,2,3]
b = a * 2
print(b)
Del刪除
a = [1,2,3,4,5,6,7,8,9]
del a[3]
print(a)
列表的方法
方法 | 描述 |
list.append(x) | 將元素 x 增加到列表 list 尾部 |
list.extend(Lt) | 將列表 Lt 所有元素加到列表 list 尾部 |
list.insert(index,x) | 在列表 list 指定位置 index 處插入元素 x |
list.remove(x) | 在列表 list 中刪除首次出現的指定元素 x |
list.pop([index]) | 刪除並返回列表list 指定位置 index 處的元素,默認是最後一個元素 |
list.clear() | 刪除列表所有元素,但並不是刪除這個列表 |
list.index(x) | 返回第一個 x 的索引位置,若不存在 x 元素拋出異常 |
list.count(x) | 返回指定元素 x 在列表 list 中出現的次數 |
len(list) | 返回列表中包含元素的個數 |
list.reverse() | 所有元素原地翻轉 |
list.sort() | 所有元素原地排序 |
list.copy() | 返回列表對象的淺拷貝 |
還有那個 slice 切片操作,和字符串差不多,這裏就不描述了,後面用到時候再說...
列表排序
修改原列表,不建新列表的排序
import random
a = [1,3,6,7,8,2,5,9]
#升序
a.sort()
print(a)
#降序
a.sort(reverse=True)
print(a)
#打亂
random.shuffle(a)
print(a)
建新列表的排序
通過內置函數 sorted()進行排序,返回新列表,不對原列表做修改。
#升序
a = [1,3,6,7,8,2,5,9]
b = sorted(a)
print(b)
#降序
b = reversed(a) #reversed返回的是迭代器對象
print(list(b))
至於max,min,sum這三個方法都有相應的返回值,顧名思義,就不細寫了。
二維列表和Java的二維數組差不多。
元組tuple
列表屬於可變序列,元組屬於不可變序列。所以元組沒有增,刪,改相關的方法。但是元組可以轉化成列表然後實現增刪改。
列表和元組可以互相轉換
#元組轉化列表
tup = (1,2,3)
lis = list(tup)
#列表轉化爲元組
a = tuple(lis)
其實我個人覺得,暫時可以理解爲,元組就像是列表的常量
Zip,將多個列表合併成一個元組
a = [1,2,3]
b = [4,5,6]
c = [7,8,9]
d = zip(a,b,c)
print(tuple(d))
字典
字典是“鍵值對”的無序可發序列,字典中的每個元素都是一個“鍵值對”,包含:“鍵 對象”和“值對象”。可以通過“鍵對象”實現快速獲取、刪除、更新對應的“值對象”。
列表中我們通過“下標數字”找到對應的對象。字典中通過“鍵對象”找到對應的“值 對象”。“鍵”是任意的不可變數據,比如:整數、浮點數、字符串、元組。但是:列表、 字典、集合這些可變對象,不能作爲“鍵”。並且“鍵”不可重複。
和C++,Java裏面的Map差不多
字典的創建
#方法一:
dic = {1:"小明",2:"小張",3:"小剛"}
print(dic)
#方法二:
a = [1,2,3]
b = ["小明","小張","小剛"]
dic2 = dict(zip(a,b))
print(dic2)
#方法三
ar = dict.fromkeys([1,2,3])
print(ar)
字典元素的訪問
dic = {1:"小明",2:"小張",3:"小剛"}
#通過 [鍵] 獲得“值”。若鍵不存在,則拋出異常。
print(dic[2])
# 通過 get()方法獲得“值”。推薦使用。
#優點是:指定鍵不存在,返回None;
# 也可以設定指定鍵不存在時默認返回的對象。推薦使用 get()獲取“值對象”。
print(dic.get(2))
dic = {1:"小明",2:"小張",3:"小剛"}
#列出所有的鍵值對
print(dic.items())
#列出所有的鍵,列出所有的值
print(dic.keys())
print(dic.values())
# len() 鍵值對的個數
print(len(dic))
#判斷鍵是否存在
print(2 in dic)
字典元素添加、修改、刪除
dic = {1:"小明",2:"小張",3:"小剛"}
#新增鍵值對
dic[4] = '小海'
print(dic)
#如果鍵不存在則新增,如果存在則覆蓋
dic[1] = '小趙'
print(dic)
#=============================================================
#使用 update()將新字典中所有鍵值對全部添加到舊字典對象上。
# 如果key 有重複,則直接覆蓋。
dic2 = {4:"小海",5:"小凱",1:"小劉"}
dic.update(dic2)
print(dic)
#=============================================================
#字典中元素的刪除,可以使用 del()方法
del(dic[2])
print(dic)
# 或者 clear()刪除所有鍵值對;pop()刪除指定鍵值對,並返回對應的 “值對象”
data = dic.pop(1)
print(data)
#隨機刪除返回鍵值對
dic.popitem()
print(dic)
序列解包
序列解包可以用於元組、列表、字典。序列解包可以讓我們方便的對多個變量賦值。
(a,b,c) = [1,2,3]
print(a)
print(b)
print(c)
序列解包用於字典時,默認是對“鍵”進行操作; 如果需要對鍵值對操作,則需要使用 items();如果需要對“值”進行操作,則需要使用 values()
#默認是鍵
dic = {1:"小明",2:"小剛",3:"小劉"}
a,b,c = dic
print(a)
print(b)
print(c)
dic = {1:"小明",2:"小剛",3:"小劉"}
#對鍵值對進行操作
a,b,c = dic.items();
print(a)
#對值進行操作
d,e,f = dic.values()
print(d)
集合
集合是無序可變,元素不能重複,實際上集合底層是字典實現。集合中的所有元素都是字典中的鍵對象,因此是唯一的
方法基本上差的不多
Python 對集也提供了並集、交集、差集等運算,和數學中的概念一樣
>>> a = {1,3,'alvin'}
>>>> b = {'he','it','alvin'}
>>>> a|b #幵集 {1, 3, 'alvin', 'he', 'it'}
>>>> a&b #交集 {'alvin'}
>>>> a-b #鞏集 {1, 3}
>>>> a.union(b) #幵集 {1, 3, 'alvin', 'he', 'it'}
>>>> a.intersection(b) #交集 {'alvin'}
>>>> a.difference(b) #鞏集 {1, 3}