您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關Python如何操作列表、元祖、字典、集合,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
是處理一組有序項目的數據結構,即你可以在一個列表中存儲一個 序列 的項目。假想你有一個購物列表,上面記載著你要買的東西,你就容易理解列表了。只不過在你的購物表上,可能每樣東西都獨自占有一行,
而在Python中,你在每個項目之間用逗號分割。列表中的項目應該包括在方括號中,這樣Python就知道你是在指明一個列表。
一旦你創建了一個列表,你可以添加、刪除或是搜索列表中的項目。由于你可以增加或刪除項目,我們說列表是 可變的 數據類型,即這種類型是可以被改變的
# 購物清單 shoplist = ['蘋果', '芒果', '胡蘿卜', '香蕉']
print ('我有', len(shoplist),'個商品在我的購物清單.') print ('它們是:'), # 提示 for item in shoplist: print(item) print ('我還買了大米.') shoplist.append('大米') print ('現在我的購物清單是', shoplist) # ['蘋果', '芒果', '胡蘿卜', '香蕉','大米']
基本操作——增
append 追加
li = ['蘋果', '芒果', '胡蘿卜', '香蕉'] li.append('大米') print(li) # ['蘋果', '芒果', '胡蘿卜', '香蕉','大米'] li.append(1) # ['蘋果', '芒果', '胡蘿卜', '香蕉','大米', 1] print(li.append('hello')) #None:無返回值,li.append()只是一個方法、動作 print(li) # ['蘋果', '芒果', '胡蘿卜', '香蕉','大米', 1 , 'hello']
**insert **插入
li = ['蘋果', '芒果', '胡蘿卜', '香蕉'] li.insert(3,'草莓') print(li) # ['蘋果', '芒果', '胡蘿卜', '草莓', '香蕉']
**extend **追加到末尾
li = ['蘋果', '芒果', '胡蘿卜', '香蕉'] li.extend('cc') print(li) # ['蘋果', '芒果', '胡蘿卜', '香蕉', 'c', 'c'] li.extend([1,2,3]) print(li) # ['蘋果', '芒果', '胡蘿卜', '香蕉', 'c', 'c', 123] li.extend(123) #報錯:數字不能迭代 print(li) #TypeError: 'int' object is not iterable
應用實例:
連續輸入員工姓名,輸入Q/q退出并打印列表
li = [] while True: username = input("請輸入要添加的員工姓名:") if username.strip().upper() == 'Q': break li.append(username) print(li) print(li)
運行結果:
]
remove:按照元素刪除
li = ['蘋果', '芒果', '胡蘿卜', '香蕉'] li.remove('芒果') print(li) # ['蘋果', '胡蘿卜', '香蕉']
pop:按照索引刪除——有返回值
li = ['蘋果', '芒果', '胡蘿卜', '香蕉'] name = li.pop(1) #有返回值 print(name,li) # 芒果 ['蘋果', '胡蘿卜', '香蕉'] name = li.pop() #不寫索引則默認刪除最后一個 print(name,li) # 香蕉 ['蘋果', '胡蘿卜']
clear: 清空
li = ['蘋果', '芒果', '胡蘿卜', '香蕉'] li.clear() print(li) #[]
del:刪除
li = ['蘋果', '芒果', '胡蘿卜', '香蕉'] del li[2:] print(li) # ['蘋果', '芒果'] del li #刪除之后,已經不存在,打印報錯 print(li) #NameError: name 'li' is not defined
循環刪除
li = [11,22,33,44,55] for i in range(len(li)): print(i) del li[0] print(li)
**li[索引] **= ‘被修改的內容’
li = ['蘋果', '芒果', '胡蘿卜', '香蕉'] li[0] = '火龍果' #將索引為0的位置改為‘火龍果’ print(li) # ['火龍果', '芒果', '胡蘿卜', '香蕉']
**li[切片] **= ‘被修改的內容’(迭代式:分成最小的元素,一個一個添加)
li = ['蘋果', '芒果', '胡蘿卜', '香蕉'] li[0:2] = 'abcd' # 將索引0-2替換為abcd,切片之后迭代處理 print(li) // ['a', 'b', 'c', 'd', '胡蘿卜', '香蕉'] li[0:3]=['我','喜歡','吃','水果'] print(li) // ['我', '喜歡', '吃', '水果', 'd', '胡蘿卜', '香蕉'
從頭到尾 :for循環
li = ['蘋果', '芒果', '胡蘿卜', '香蕉'] for i in li: print(i)
某一個:索引
li = ['蘋果', '芒果', '胡蘿卜', '香蕉'] print(li[1]) #芒果
一段:切片
li = ['蘋果', '芒果', '胡蘿卜', '香蕉'] print(li[0:2]) #['蘋果', '芒果', '胡蘿卜']
li = ['蘋果', '芒果', '胡蘿卜', ['a','b','c'],'香蕉'] print(li[2][1]) #蘿 li[3][0].upper() #把列表中第四個元素列表的第一個元素變為大寫 print(li) # ['蘋果', '芒果', '胡蘿卜', ['a', 'b', 'c'], '香蕉']
#索引默認從零開始 li = ['alex','taibai','wusir','egon'] for i in li: print(li.index(i),i) 指定索引從100開始
運行結果:
split**:**字符串轉換成列表 str--->list
s = 'xcsd_cdc_eht_木木' print(s.split('_')) // ['xcsd', 'cdc', 'eht', '木木'] s1 = 'xc sdc dc eht曾 木木' print(s1.split(' ')) // ['xc', 'sdc', 'dc', 'eht曾', '木木']
**join:**列表轉換成字符串 list--->str
join(可迭代對象iterable) split
可迭代對象iterable:list,str,元祖
li = ['xcsd', 'cdc', 'eht', '木木'] s = ''.join(li) print(s) #xcsdcdceht木木 s1 = '_'.join(li) print(s1) #xcsd_cdc_eht_木木
range:顧頭不顧尾——相當于有序的數字列表(可以反向,加步長)
for i in range(2,6): print(i)
應用實例:
循環打印,列表里遇到列表也需要循環打印
li = [1,2,3,5,'alex',[2,3,4,5,'taibai'],'afds'] for i in li: if type(i) == list: for n in i: print(n) else: print(i)
運行結果:
元組和列表十分類似,只不過元組和字符串一樣是 不可變的 即你不能修改元組。元組通過圓括號中用逗號分割的項目定義。
元組通常用在使語句或用戶定義的函數能夠安全地采用一組值的時候,即被使用的元組的值不會改變
tu1 = (1) tu2 = (1,) print(tu1,type(tu1)) #1 <class 'int'> print(tu2,type(tu2)) #(1,) <class 'tuple'>
tu3 = ([1]) tu4 = ([1],) print(tu3,type(tu3)) #[1] <class 'list'> print(tu4,type(tu4)) #([1],) <class 'tuple'>
tu = (1,2,3,'alex','egon') print(tu[2]) #3 print(tu[0:2]) #(1, 2) for i in tu: print(i) #循環打印元祖
字典類似于你通過聯系人名字查找地址和聯系人詳細情況的地址簿,即,我們把鍵(名字)和值(詳細情況)聯系在一起。注意,鍵必須是唯一的,就像如果有兩個人恰巧同名的話,你無法找到正確的信息。
注意,你只能使用不可變的對象(比如字符串)來作為字典的鍵,但是你可以把不可變或可變的對象作為字典的值。
基本說來就是,你應該只使用簡單的對象作為鍵。
鍵值對在字典中以這樣的方式標記:d = {key1 : value1, key2 : value2 }。
注意它們的鍵/值對用冒號分割,而各個對用逗號分割,所有這些都包括在花括號中
dict key(鍵)必須是不可變數據類型,可哈希 value(值)任意數據類型
dict 優點:二分查找去查詢 存儲大量的關系型數據 特點:<=3.5版本無序,3.6以后都是有序
dic['鍵'] = 值
dic1 = {'age':18,'name':'xc','sex':'female'} dic1['height'] = 165 print(dic1) # 沒有鍵值對,增加 # {'age': 18, 'name': 'xc', 'sex': 'female', 'height': 165} dic1['age'] = 21 print(dic1) #有鍵值對,則修改 #{'age': 21, 'name': 'xc', 'sex': 'female', 'height': 165}
setdefault 設置默認
# dic1 = {'age':18,'name':'xc','sex':'female'} dic1.setdefault('weight',120) print(dic1) # 沒有鍵值對,增加 # {'age': 18, 'name': 'xc', 'sex': 'female', 'weight': 120} dic1.setdefault('name','aa') print(dic1) #有鍵值對,不做任何操作 # {'age': 18, 'name': 'xc', 'sex': 'female', 'weight': 120}
刪除優先使用pop(有返回值,要刪除的內容不存在時不報錯),而不是del
pop 刪除
dic1 = {'age':18,'name':'xc','sex':'female'} print(dic1.pop('age')) #有age直接刪除---有返回值,按鍵刪除 print(dic1) #18 {'name': 'xc', 'sex': 'female'} print(dic1.pop('erge','沒有此鍵/None')) #沒有erge----可設置返回值:沒有此鍵/None print(dic1)
popitem 隨機刪除
dic1 = {'age':18,'name':'xc','sex':'female'} print(dic1.popitem()) #('sex', 'female') #隨機刪除:有返回值-----返回元祖:刪除的鍵值
clear 清空
dic1 = {'age':18,'name':'xc','sex':'female'} dic1.clear() #清空字典 print(dic1) #{}
del 刪除
dic1 = {'age':18,'name':'xc','sex':'female'} del dic1['name'] # 有,則刪除 # del dic1['name1'] #沒有,則報錯 print(dic1) #{'age': 18, 'sex': 'female'}
update
dic = {'age':18,'name':'xc','sex':'female'} dic2 = {'name':'alex','weight':'168'} dic2.update(dic) #有則更新覆蓋,沒有則增加 print(dic) #{'age': 18, 'name': 'xc', 'sex': 'female'} print(dic2) #{'name': 'xc', 'weight': '168', 'age': 18, 'sex': 'female'}
keys,values,items
dic1 = {'age':18,'name':'xc','sex':'female'} print(dic1.keys(),type(dic1.keys())) #鍵 dict_keys(['age', 'name', 'sex']) <class 'dict_keys'> print(dic1.values()) #值 dict_values([18, 'xc', 'female']) print(dic1.items()) #元祖 dict_items([('age', 18), ('name', 'xc'), ('sex', 'female')])
得到鍵值,首選get
print(dic1['name']) #有則打印 #print(dic1['name1']) #沒有則報錯 print(dic1.get('name')) #有name直接輸出---有返回值 print(dic1.get('name1','沒有此鍵')) #沒有name1----可設置返回值:沒有此鍵/None
循環輸出
for i in dic1: print(i) #循環打印鍵(默認為鍵) for i in dic1.keys(): print(i) #循環打印鍵 for i in dic1.values(): print(i) #循環打印值
dic = { 'name':['alex','wusir','xinchen'], 'py9':{ 'time':'1213', 'study_fee':19800, 'addr':'CBD', }, 'age':21 }
dic['age'] = 56 # 找到age,再更新為56 print(dic) dic['name'].append('rt') #找到name,在添加名字 print(dic) dic['name'][1] = dic['name'][1].upper() #找到name,再把wusir變為大寫 print(dic) dic['py9']['female'] = 6 #找到元祖,增加鍵值對female:6 print(dic)
#輸入一串字符,遇到字母,轉換為‘_’,并打印輸出
info = input('請輸入:') for i in info: if i.isalpha(): info = info.replace(i,'_') print(info)
運行結果:
集合 類似于列表,但每個元素都必須是獨一無二且不可變的:
它是無序的
print(set1) #{1, 2, 3} set2 = {1,2,3,[2,3],{'name':'xc'}} #列表是可變的(不可哈希),所以出錯 print(set2) #TypeError: unhashable type: 'list'
set1 = {'alex','wusir','ritian','egon','barry'} # (1)add #因為集合是無序的,所以每次運行結果不一定一樣,增加的位置也不一定一樣 set1.add('nvshen') #{'ritian', 'nvshen', 'egon', 'wusir', 'alex', 'barry'} print(set1)
update
set1.update('xc') #迭代添加,依然是無序的 print(set1) #{'egon', 'x', 'wusir', 'nvshen', 'c', 'alex', 'ritian', 'barry'}
set1 = {'alex','wusir','ritian','egon','barry'}
pop--隨機刪除
print(set1.pop()) #egon:有返回值,返回本次刪除的內容 print(set1) #{'barry', 'alex', 'wusir', 'ritian'}
remove——指定元素刪除
set1.remove('alex') print(set1) #{'egon', 'wusir', 'barry', 'ritian'}
clear——清空
set1.clear() print(set1) #空集合:set()
del
del set1 #刪除之后集合不存在,報錯 print(set1) #NameError: name 'set1' is not defined
集合是無序;
集合中的元素是不可變數據類型
set1 = {'alex','wusir','ritian','egon','barry'} for i in set1: print(i)
運行結果:
set1 = {1,2,3,4,5} set2 = {4,5,6,7,8}
交集
print(set1 & set2) #(1) {4, 5} print(set1.intersection(set2)) #(2) {4, 5}
并集
print(set1 | set2) #(1) {1, 2, 3, 4, 5, 6, 7, 8} print(set1.union(set2)) #(2) {1, 2, 3, 4, 5, 6, 7, 8}
反交集--除交集以外的其他元素
print(set1 ^ set2) #(1) {1, 2, 3, 6, 7, 8} print(set1.symmetric_difference(set2)) #(2) {1, 2, 3, 6, 7, 8}
差集--前者獨有的
print(set1 - set2) #(1) {1, 2, 3} print(set1.difference(set2)) #(2) {1, 2, 3} print(set2 - set1) #(1) {8, 6, 7} print(set2.difference(set1)) #(2) {8, 6, 7}
子集與超集
set3 = {1,2,3,4,5} set4 = {1,2,3,4,5,6,7,8} print('------ set3是set4的子集 ------') print(set3 < set4) #True print(set3.issubset(set4)) #True print('------ set4是set3的超集 ------') print(set4 > set3) #True print(set4.issuperset(set3)) #True
正向排序:sort()
li = [1,5,4,2,6,7,3] li.sort() print(li) #[1, 2, 3, 4, 5, 6, 7]
倒序排序:li.sort(reverse = True)
li = [1,5,4,2,6,7,3] li.sort(reverse = True) print(li) #[7, 6, 5, 4, 3, 2, 1]
反轉:li.reverse()
li = [1,5,4,2,6,7,3] li.reverse() print(li) #[3, 7, 6, 2, 4, 5, 1]
字符串列表排序——根據字符串的第一個字符對應的ASCII碼排序
li = ['ojhy','asa','cvd','hdk'] li.sort() print(li) #['asa', 'cvd', 'hdk', 'ojhy']
li = ['xcsd', 'cdc', '木木',[1, 5, 2], 'eht', '木木'] num = li.count('木木') print(num) #2:'木木'出現2次
li = ['xcsd', 'cdc', '木木',[1, 5, 2], 'eht', '木木'] l = len(li) print(l) #6:列表長度為6
li = ['xcsd', 'cdc', '辛辰',[1, 5, 2], 'eht', '辛辰'] print(li.index('eht')) #4:'eht'的索引為4元祖
列表list | 元組 tuple | 集合 set | 字典 dict | |
---|---|---|---|---|
可否讀寫 | 讀寫 | 只讀 | 讀寫 | 讀寫 |
可否重復 | 是 | 是 | 否 | 是 |
存儲方式 | 值 | 值 | 鍵<br/>(不能重復) | 鍵值對<br/>(鍵不能重復) |
是否有序 | 有序 | 有序 | 無序 | 自動正序 |
初始化 | [1,'a'] | ('a', 1) | set([1,2])<br/>或 {1,2} | {'a':1,'b':2} |
添加 | append | 只讀 | add | d['key'] = 'value' |
讀元素 | l[2:] | t[0] | 無 | d['a'] |
關于“Python如何操作列表、元祖、字典、集合”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。