清單:
list1 = [1,'ans',2983,12,'Hello','nihao']
#一個清單中可以存放多個不同資料類型的值,例如上面例子中有數字也有字元串
list1.append("十四五六七")
#輸出[1, 'ans', 2983, 12, 'Hello', 'nihao', '十四五六七']
#append方法在清單末尾增加新的值
list1.insert(0,123456)
#輸出[123456, 1, 'ans', 2983, 12, 'Hello', 'nihao', '十四五六七']
#清單名.insert(下标,插入的值) 在對應下标位置插入對應的值
list1.count(1)
#輸出1,因為list1清單中隻有一個數字1
#清單名.count(值) 傳回值在清單中出現的次數
list1.remove('nihao')
#輸出[123456, 1, 'ans', 2983, 12, 'Hello', '十四五六七']
#清單名.remove(值) 從頭周遊清單,找到第一個比對的值,并删除
list1.reverse()
#輸出['十四五六七', 'Hello', 12, 2983, 'ans', 1, 123456]
#反轉list1清單
test = [1,2,3,4,5]
list1.extend(test)
#輸出['十四五六七', 'Hello', 12, 2983, 'ans', 1, 123456, 1, 2, 3, 4, 5]
#将test清單中的所有元素添加到list1清單中
list2 = [9,3,1,5,6,7,8,2]
list2.sort()
#輸出[1, 2, 3, 5, 6, 7, 8, 9]
#清單名.sort() 對清單中的元素進行排序(不可逆的)
del list1[0]
#輸出['Hello', 12, 2983, 'ans', 1, 123456, 1, 2, 3, 4, 5]
#del 清單名[下标] 删除該清單中下表對應的元素
list1.pop(0)
#輸出[12, 2983, 'ans', 1, 123456, 1, 2, 3, 4, 5]
#清單名.pop(下标) 從清單中彈出下标對應的元素,下标為空時預設彈出最後一個元素
清單推導式(舉例如下):
清單推導式(舉例如下):
list3 = list(map(lambda x: x**2,range(10)))
#輸出[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
等同于
list4 = [x**2 for x in range(10)]
list5 = [(x,y) for x in [1,2,3] for y in [3,1,4] if x != y]
#輸出[(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]
等同于
list6 = []
for x in [1,2,3]:
for y in [3,1,4]:
if x != y:
list6.append((x,y))
list7 = [x * 3 for x in [x + 123 for x in [4,5,6]]]
#清單嵌套,輸出[381, 384, 387]
元組:
元組是由多個用逗号分隔的值。元組是不可變的,一旦建立便隻能夠查找元素、删除整個元組。
a = 'Kobe','NAsi','DAls','Allmn' #第一種
#a = ('Kobe', 'NAsi', 'DAls', 'Allmn') , 此時a是一個元組
#元組是不可變的,在元組中不能增加、删除、編輯元素,能夠查找元素和删除整個數組
a = ('Kode','hello','math') #第二種
#a = ('Kode', 'hello', 'math') , a是一個元組
a = (123,) #建立隻有一個元素的元組時,在值後面要跟一個逗号
是元組: a = (12,) a = 12, #type(a) = <class 'tuple'>
不是元組: a = (12) a = 12 #type(a) = <class 'int'>
集合:
集合是一個無序不重複元素的集,主要作用于去重,因為集合中的元素是沒有重複的。
可以把其他資料類型轉換成集合,就可以直接把重複的元素去掉,然後再轉回原來的資料結構即可,舉例如下:
a = [1,2,3,1,2,3]
a = list(set(a))
#輸出a = [1, 2, 3],即實作去重效果,重複的元素都去掉了
大括号或set()函數可以用來建立集合,但set()函數可以建立空集合,{}建立的是空字典。
如果要存放一個單詞的所有字元:
a = set("Hello World!") #傳回a = {'H', 'o', 'l', 'r', 'W', 'd', 'e', ' ', '!'},集合中元素無序排列
如果要存放一個單詞:
a = {"Hello World!"} #傳回a = {'Hello World!'}
集合還支援求解交集、差集、對稱差集等數學運算。
a = {'a','b','c','d'}
a.pop() #會從a集合中随機彈出一個元素(這裡的彈出是指在a集合中删除該元素,并将該元素傳回到輸出界面上)
a.add('dsa') #添加該元素到集合中
字典:
字典是無序的鍵值對{key:value}集合,同一字典中的鍵必須是互不相同的(鍵相當于主鍵,是不能重複的)。一個大括号{}建立一個空字典。鍵值對之間用逗号分隔,這就是字典的輸出形式。
a = {"key":"value","name":"qiaozhi","age":12,"gender":"男"}
a["key"] #傳回'value',即a["key"] = 'value'
a["number"] = 123 #在a字典中建立新的鍵值對'number': 123
#此時a = {'key': 'value', 'name': 'qiaozhi', 'age': 12, 'gender': '男', 'number': 123}
del a['number'] #删除鍵為“number”的鍵值對
#此時a = {'key': 'value', 'name': 'qiaozhi', 'age': 12, 'gender': '男'}
'number' in a #輸出False,因為a中沒有'number'這個鍵對應的鍵值對
‘name’ in a #輸出True,a字典中有'name'這個鍵對應的鍵值對
字典中的鍵是不可變類型,確定鍵的唯一性。dict()可以從包含鍵值對的元組中建立字典。
a = dict((("name","Kubo"),("age",1234)))
#輸出a = {'name': 'Kubo', 'age': 1234}
a.keys() = dict_keys(['name', 'age']) #傳回a字典的所有鍵
a.values() = dict_values(['Kubo', 1234]) #傳回a字典的所有值
a.items() = dict_items([('name', 'Kubo'), ('age', 1234)]) #傳回a字典的所有鍵值對
setdefault()方法,向字典中的元素添加資料時,首先要判斷該元素是否存在,不存在則需建立一個預設值,存在的話則直接添加元素。
a = {} #a是一個空字典
a.setdefault('book',[]).append('MySQL')
#如果a字典中沒有book鍵,則建立{'book':[]},即建立book鍵值對,預設值就是[],然後執行append添加MySQl在[]中
#如果a字典中有book鍵的鍵值對,則在book對應的值(資料類型為清單)中添加MySQL
#此時a = {'book': ['MySQL']}
a.setdefault('book',[]).append('Python')
#此時a = {'book': ['MySQL', 'Python']}
當索引不存在的鍵值對時,會報錯。dict.get(key,default)方法,在dict中索引key鍵時,如果key鍵不存在,則傳回default,而不會報錯。(如果key鍵存在,則傳回key鍵對應的值)
#例句如上代碼段
a['name'] #會報KeyError: 'name'錯誤
a.get('name','不存在') #輸出:不存在
a.get('book','不存在') #輸出:['MySQL', 'Python']
enumerate()方法在周遊的時候可以傳回元素索引值,适用于清單等等資料結構。
for i,j in enumerate(a['book']):
print(i,j)
#傳回:
#0 MySQL
#1 Python
for i,j in enumerate(['a','b','c','d']):
print(i,j)
#傳回:
#0 a
#1 b
#2 c
#3 d
zip()函數可以同時周遊兩個序列類型。
a = ['name','age']
b = ['Kubo',18]
for i,j in zip(a,b):
print("{} is {}".format(i,j))
#傳回:
#name is Kubo
#age is 18