這篇“Python的組合數(shù)據(jù)類型怎么用”文章的知識點大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Python的組合數(shù)據(jù)類型怎么用”文章吧。
創(chuàng)新互聯(lián)主要從事成都網(wǎng)站建設、成都做網(wǎng)站、網(wǎng)頁設計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務。立足成都服務富縣,十多年網(wǎng)站建設經(jīng)驗,價格優(yōu)惠、服務專業(yè),歡迎來電咨詢建站服務:13518219792
序列類型:內(nèi)部元素有位置關系,能通過位置序號訪問其中元素
列表是一個可以使用多種類型元素,支持元素的增、刪、查、改操作的序列類型
ls = ["Python", 1989, True, {"version": 3.7}] ls
['Python', 1989, True, {'version': 3.7}]
另一種產(chǎn)生方式:list(可迭代對象)
可迭代對象包括:字符串、元組、集合、range()等
字符串轉(zhuǎn)列表
list("歡迎訂閱本專欄")
['歡', '迎', '訂', '閱', '本', '專', '欄']
元組轉(zhuǎn)列表
list(("我", "們", "很", "像"))
['我', '們', '很', '像']
集合轉(zhuǎn)列表
list({"李雷", "韓梅梅", "Jim", "Green"})
['Green', 'Jim', '李雷', '韓梅梅']
特殊的range()
for i in [0, 1, 2, 3, 4, 5]: print(i)
0 1 2 3 4 5
for i in range(6): print(i)
0 1 2 3 4 5
range(起始數(shù)字,中止數(shù)字,數(shù)字間隔)
如果起始數(shù)字缺省,默認為0
必須包含中止數(shù)字,但是注意中止的數(shù)字取不到
數(shù)字間隔缺省,默認為1
for i in range(1, 11, 2): print(i)
1 3 5 7 9
range()轉(zhuǎn)列表
list(range(1, 11, 2))
[1, 3, 5, 7, 9]
列表的長度——len(列表)
ls = [1, 2, 3, 4, 5] len(ls)
5
列表的索引——與同為序列類型的字符串完全相同
變量名[位置編號]
正向索引從0開始
反向索引從-1開始
cars = ["BYD", "BMW", "AUDI", "TOYOTA"]
print(cars[0]) print(cars[-4])
BYD BYD
列表的切片
變量名[開始位置:結(jié)束位置:切片間隔]
cars = ["BYD", "BMW", "AUDI", "TOYOTA"]
正向切片
print(cars[:3]) # 前三個元素,開始位置缺省,默認為0;切片間隔缺省,默認為1
['BYD', 'BMW', 'AUDI']
print(cars[1:4:2]) # 第二個到第四個元素 前后索引差為2
['BMW', 'TOYOTA']
print(cars[:]) # 獲取整個列表,結(jié)束位置缺省,默認取值到最后
['BYD', 'BMW', 'AUDI', 'TOYOTA']
print(cars[-4:-2]) # 獲取前兩個元素
['BYD', 'BMW']
反向切片
cars = ["BYD", "BMW", "AUDI", "TOYOTA"]
print(cars[:-4:-1]) # 開始位置缺省,默認為-1 print(cars[::-1]) # 獲得反向列表
['TOYOTA', 'AUDI', 'BMW'] ['TOYOTA', 'AUDI', 'BMW', 'BYD']
用** list1+lis2 **的形式實現(xiàn)列表的拼接
a = [1, 2] b = [3, 4] a+b # 該用法用的不多
[1, 2, 3, 4]
用 n*list 或 list*n 實現(xiàn)列表的成倍復制
初始化列表的一種方式
[0]*10
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
1、增加元素
在末尾增加元素——列表.append(待增元素)
languages = ["Python", "C++", "R"]
languages.append("Java") languages
['Python', 'C++', 'R', 'Java']
在任意位置插入元素——列表.insert(位置編號,待增元素)
在位置編號相應元素前插入待增元素
languages.insert(1, "C") languages
['Python', 'C', 'C++', 'R', 'Java']
在末尾整體并入另一列表——列表1.extend(列表2)
append 將列表2整體作為一個元素添加到列表1中
languages.append(["Ruby", "PHP"]) languages
['Python', 'C', 'C++', 'R', 'Java', ['Ruby', 'PHP']]
extend 將待列表2內(nèi)的元素逐個添加到列表1中,當然也可以采用加法實現(xiàn)。
languages = ['Python', 'C', 'C++', 'R', 'Java'] languages.extend(["Ruby", "PHP"]) languages
['Python', 'C', 'C++', 'R', 'Java', 'Ruby', 'PHP']
2、刪除元素
刪除列表i位置的元素 列表.pop(位置)
languages = ['Python', 'C', 'C++', 'R', 'Java'] languages.pop(1) languages
['Python', 'C++', 'R', 'Java']
不寫位置信息,默認刪除最后一個元素
languages.pop() languages
['Python', 'C++', 'R']
刪除列表中的第一次出現(xiàn)的待刪元素 列表.remove(待刪元素)
languages = ['Python', 'C', 'R', 'C', 'Java'] languages.remove("C") languages
['Python', 'R', 'C', 'Java']
languages = ['Python', 'C', 'R', 'C', 'Java'] while "C" in languages: languages.remove("C") languages
['Python', 'R', 'Java']
3、查找元素
列表中第一次出現(xiàn)待查元素的位置 列表.index(待查元素)
languages = ['Python', 'C', 'R','Java'] idx = languages.index("R") idx
2
4、修改元素
通過"先索引后賦值"的方式,對元素進行修改 列表名[位置]=新值
languages = ['Python', 'C', 'R','Java'] languages[1] = "C++" languages
['Python', 'C++', 'R', 'Java']
5、列表的復制
錯誤的方式:這種方式僅是相當于給列表起了一個別名
languages = ['Python', 'C', 'R','Java'] languages_2 = languages print(languages_2)
['Python', 'C', 'R', 'Java']
languages.pop() print(languages) print(languages_2)
['Python', 'C', 'R'] ['Python', 'C', 'R']
正確的方式——淺拷貝
當內(nèi)容中也有列表這種可變的情況時,這時淺拷貝可能出問題,應該采用深拷貝。
方法1:列表.copy()
languages = ['Python', 'C', 'R','Java'] languages_2 = languages.copy() languages.pop() print(languages) print(languages_2)
['Python', 'C', 'R'] ['Python', 'C', 'R', 'Java']
方法2:列表 [ : ]
相當于對整個列表的切片
languages = ['Python', 'C', 'R','Java'] languages_3 = languages[:] languages.pop() print(languages) print(languages_3)
['Python', 'C', 'R'] ['Python', 'C', 'R', 'Java']
6、列表的排序
使用列表.sort()對列表進行永久排序
直接在列表上進行操作,無返回值
默認是遞增的排序
ls = [2, 5, 2, 8, 19, 3, 7] ls.sort() ls
[2, 2, 3, 5, 7, 8, 19]
遞減排列
ls.sort(reverse = True) ls
[19, 8, 7, 5, 3, 2, 2]
使用sorted(列表)對列表進行臨時排序
原列表保持不變,返回排序后的列表
ls = [2, 5, 2, 8, 19, 3, 7] ls_2 = sorted(ls) print(ls) print(ls_2)
[2, 5, 2, 8, 19, 3, 7] [19, 8, 7, 5, 3, 2, 2]
sorted(ls, reverse = True)
[19, 8, 7, 5, 3, 2, 2]
7、列表的翻轉(zhuǎn)
使用列表.reverse()對列表進行永久翻轉(zhuǎn)
直接在列表上進行操作,無返回值
ls = [1, 2, 3, 4, 5] print(ls[::-1]) ls
[5, 4, 3, 2, 1] [1, 2, 3, 4, 5]
ls.reverse() ls
[5, 4, 3, 2, 1]
8、使用for循環(huán)對列表進行遍歷
ls = [1, 2, 3, 4, 5] for i in ls: print(i)
1 2 3 4 5
元組是一個可以使用多種類型元素,一旦定義,內(nèi)部元素不支持增、刪和修改操作的序列類型
通俗的講,可以將元組視作“不可變的列表”
names = ("Peter", "Pual", "Mary")
不支持元素增加、元素刪除、元素修改操作
其他操作與列表的操作完全一致
打包與解包
例1 返回值是打包成元組的形式
def f1(x): # 返回x的平方和立方 return x**2, x**3 # 實現(xiàn)打包返回 print(f1(3)) print(type(f1(3))) # 元組類型
(9, 27)
a, b = f1(3) # 實現(xiàn)解包賦值 print(a) print(b)
9 27
例2
采用zip函數(shù)進行打包
numbers = [201901, 201902, 201903] name = ["小明", "小紅", "小強"] list(zip(numbers,name))
[(201901, '小明'), (201902, '小紅'), (201903, '小強')]
for number,name in zip(numbers,name): # 每次取到一個元組,立刻進行解包賦值 print(number, name)
201901 小明 201902 小紅 201903 小強
映射類型: 通過“鍵”-“值”的映射實現(xiàn)數(shù)據(jù)存儲和查找
常規(guī)的字典是無序的,僅可以通過鍵來對數(shù)據(jù)進行訪問
students = {201901: '小明', 201902: '小紅', 201903: '小強'} students
字典鍵的要求
1、字典的鍵不能重復
如果重復,前面的鍵就被覆蓋了
students = {201901: '小明', 201901: '小紅', 201903: '小強'} students
{201901: '小紅', 201903: '小強'}
2、字典的鍵必須是不可變類型,如果鍵可變,就找不到對應存儲的值了
不可變類型:數(shù)字、字符串、元組。 一旦確定,它自己就是它自己,變了就不是它了。
可變類型:列表、字典、集合。 一旦確定,還可以隨意增刪改。因此這三個類型不能作為字典的鍵。
d1 = {1: 3} d2 = {"s": 3} d3 = {(1,2,3): 3}
上面沒有報錯,說明是合法的。
d = {[1, 2]: 3}
--------------------------------------------------------------------------- TypeError Traceback (most recent call last)in ----> 1 d = {[1, 2]: 3} TypeError: unhashable type: 'list'
d = {{1:2}: 3}
--------------------------------------------------------------------------- TypeError Traceback (most recent call last)in ----> 1 d = {{1:2}: 3} TypeError: unhashable type: 'dict'
d = {{1, 2}: 3}
--------------------------------------------------------------------------- TypeError Traceback (most recent call last)in ----> 1 d = {{1, 2}: 3} TypeError: unhashable type: 'set'
字典的長度——鍵值對的個數(shù)
students = {201901: '小明', 201902: '小紅', 201903: '小強'} len(students)
3
字典的索引
通過 字典[鍵] 的形式來獲取對應的值
students = {201901: '小明', 201902: '小紅', 201903: '小強'} students[201902]
'小紅'
1、增加鍵值對
變量名[新鍵] = 新值
students = {201901: '小明', 201902: '小紅', 201903: '小強'} students[201904] = "小雪" students
{201901: '小明', 201902: '小紅', 201903: '小強', 201904: '小雪'}
2、刪除鍵值對
通過del 變量名[待刪除鍵]
students = {201901: '小明', 201902: '小紅', 201903: '小強'} del students[201903] students
{201901: '小明', 201902: '小紅'}
通過變量名.pop(待刪除鍵)
students = {201901: '小明', 201902: '小紅', 201903: '小強'} value = students.pop(201903) # 刪除鍵值對,同時獲得刪除鍵值對的值 print(value) print(students)
小強 {201901: '小明', 201902: '小紅'}
變量名.popitem() 隨機刪除一個鍵值對,并以元組返回刪除鍵值對
students = {201901: '小明', 201902: '小紅', 201903: '小強'} key, value = students.popitem() print(key, value) print(students)
201903 小強 {201901: '小明', 201902: '小紅'}
3、修改值
通過先索引后賦值的方式對相應的值進行修改
students = {201901: '小明', 201902: '小紅', 201903: '小強'} students[201902] = "小雪" students
{201901: '小明', 201902: '小雪', 201903: '小強'}
4、d.get( )方法
d.get(key,default) 從字典d中獲取鍵key對應的值,如果沒有這個鍵,則返回default
小例子:統(tǒng)計"牛奶奶找劉奶奶買牛奶"中字符的出現(xiàn)頻率
s = "牛奶奶找劉奶奶買牛奶" d = {} print(d) for i in s: d[i] = d.get(i, 0)+1 # 如果該字符第一次出現(xiàn),則返回default 0 ,然后+1統(tǒng)計。如果之前就有i這個鍵,則返回該 key i 所對應的值。 print(d) # print(d)
{} {'牛': 1} {'牛': 1, '奶': 1} {'牛': 1, '奶': 2} {'牛': 1, '奶': 2, '找': 1} {'牛': 1, '奶': 2, '找': 1, '劉': 1} {'牛': 1, '奶': 3, '找': 1, '劉': 1} {'牛': 1, '奶': 4, '找': 1, '劉': 1} {'牛': 1, '奶': 4, '找': 1, '劉': 1, '買': 1} {'牛': 2, '奶': 4, '找': 1, '劉': 1, '買': 1} {'牛': 2, '奶': 5, '找': 1, '劉': 1, '買': 1}
5、d.keys( ) d.values( )方法
把所有的key,value 單獨拿出來。
students = {201901: '小明', 201902: '小紅', 201903: '小強'} print(list(students.keys())) print(list(students.values()))
[201901, 201902, 201903] ['小明', '小紅', '小強']
6、d.items( )方法及字典的遍歷
print(list(students.items())) for k, v in students.items():#進行解包 print(k, v)
[(201901, '小明'), (201902, '小紅'), (201903, '小強')] 201901 小明 201902 小紅 201903 小強
一系列互不相等元素的無序集合(互斥)
元素必須是不可變類型:數(shù)字,字符串或元組,可視作字典的鍵
可以看做是沒有值,或者值為None的字典
students = {"小明", "小紅", "小強", "小明"} #可用于去重 students
{'小強', '小明', '小紅'}
小例子 通過集合進行交集并集的運算
Chinese_A = {"劉德華", "張學友", "張曼玉", "鐘楚紅", "古天樂", "林青霞"} Chinese_A
{'劉德華', '古天樂', '張學友', '張曼玉', '林青霞', '鐘楚紅'}
Math_A = {"林青霞", "郭富城", "王祖賢", "劉德華", "張曼玉", "黎明"} Math_A
{'劉德華', '張曼玉', '林青霞', '王祖賢', '郭富城', '黎明'}
語文和數(shù)學兩門均為A的學員
S & T 返回一個新集合,包括同時在集合S和T中的元素
Chinese_A & Math_A
{'劉德華', '張曼玉', '林青霞'}
語文或數(shù)學至少一門為A的學員
S | T 返回一個新集合,包括集合S和T中的所有元素
Chinese_A | Math_A
{'劉德華', '古天樂', '張學友', '張曼玉', '林青霞', '王祖賢', '郭富城', '鐘楚紅', '黎明'}
語文數(shù)學只有一門為A的學員
S ^ T 返回一個新集合,包括集合S和T中的非共同元素
Chinese_A ^ Math_A
{'古天樂', '張學友', '王祖賢', '郭富城', '鐘楚紅', '黎明'}
語文為A,數(shù)學不為A的學員
S - T 返回一個新集合,包括在集合S但不在集合T中的元素
Chinese_A - Math_A
{'古天樂', '張學友', '鐘楚紅'}
數(shù)學為A,語文不為A的學員
Math_A - Chinese_A
{'王祖賢', '郭富城', '黎明'}
增加元素——S.add(x)
stars = {"劉德華", "張學友", "張曼玉"} stars.add("王祖賢") stars
{'劉德華', '張學友', '張曼玉', '王祖賢'}
移除元素——S.remove(x)
stars.remove("王祖賢") stars
{'劉德華', '張學友', '張曼玉'}
集合的長度——len(S)
len(stars)
3
集合的遍歷——借助for循環(huán)
for star in stars: print(star)
張學友 張曼玉 劉德華
以上就是關于“Python的組合數(shù)據(jù)類型怎么用”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關的知識內(nèi)容,請關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。