1. 程式人生 > >Python之序列(列表&元組&字典&集合)

Python之序列(列表&元組&字典&集合)

一、列表

1.列表:儲存成組的資訊,一系列按特定順序的元素組成 【大多數列表都是動態的】
 【列表名稱一般為複數,如letters、cars、names
    格式:listName=['  ', /"  "]  
    索引從0而不是1開始,-1,-2……索引分別代表倒數第一、二  個元素】
1.通過索引訪問列表元素:———————————–
{   cars=['瑪莎拉蒂','凱迪拉克','勞斯萊斯']
    print(cars[0]) 
    瑪莎拉蒂        }
2.修改、新增和刪除元素—————————————
        ---修改:listName[索引值]="  "
//重新賦值 改變範圍元素的值:listName[0:5]=[value,~/value] 改表步長修改元素:listName[::2]=[~] //步長為2 ---新增:listName.append("元素名") // [ə'pɛnd],附加 空列表添:listName.append(“元素名”) ~~ 【expend() //擴充套件為序列】 插入:listName.insert(索引值 ," ") //必須指定索引和值 listName[3:3]=[' '] ---刪除: del listName[索引值] . pop(索引值) //檢索並刪除,預設最後一個 //[pɑp], 取出
remove("元素名"//存在重複的刪除第一個值 . clear() //清空列表 【都可根據切片刪除 [ : ] pop() remove() 都為方法; del為語句】

=========== 組織列表(調整元素排列順序) ============

1.臨時正反序(函式:sorted( ))

print( sorted(listName) )
print( sorted(listName,reverse=True) )

2.永久正反序(方法:sort( ))

listName.sort()
listName.sort(reverse=True)
//listName.sort(key=lambda a:a[-1]) //按照最後一個字母排序

3.檢視列表長度

len(listName)
【發生IndexError(索引錯誤)時可以列印長度/索引值-1來找出邏輯錯誤】

================== 操作列表(對每個元素採取相同措施) ==================

1.遍歷列表

cars=[‘大眾’,’賓士’,’QQ’]
for car in cars:
print(car) 【變數單數,列表名複數,“ : ” 縮排】
/for car in range(0,len(cars)):
print(cars[car])
【避免縮排錯誤!】

2.函式range(firstNum,finalNum)列印數字

【Tips:從第一個值開始列印到最後一個索引前一個值結束!】

#####3.建立數值列表(儲存數字集合),函式list()轉化為列表
{
list( range(1,11) ) 


}
{
建立一個1-10的平方的數字列表
squares=[]
for value in range(1,11):
                  squares.append(value*value)
print(squares)  }
【 print(list('abc'))            //str轉list
     print( list(('a','b','c')) )       //tuple轉list 】

#####4.統計數字列表
min() /max() /sum()     //求列表中最小/最大/和值

#####5.列表解析 (將for迴圈和新建元素合併成一行,並自動附加新元素)1-10平方可以:
squares=[value*value for value in range(1,11)]
列表名=[表示式 迴圈給表示式提供值]
6.列表切片(使用列表一部分)

syntax:listName[起始索引:結束索引]
【和range()一樣不取終止值! 】

players=['關羽','張飛','趙雲','韓信','姜子牙']
print(players[2:4])【趙雲 韓信 //Tips:對應元素為+1,當前4】
print(players[:3])
print(players[2:])
print(players[-2:])
}
A.遍歷切片
print(newValue)
B.複製列表
-newListName=listName[ : ]  //將整個列表切片賦值給newListName
-newListName=listName.copy()
            //listName2=listName1會造成共享引用

補充:

重複
listName*n //n表示:列印次數
檢測某element首位置
listName.index(elementName)

統計某個element出現次數
print(listName.count(elementName))

二、元組(tuple)

1.特點
無序
不可變的序列
可包含任意物件的集合
下標訪問
任意巢狀
不可變原位改變
2.定義一個元組
tupleName=(element_0,element_1)
3.訪問一個元組
print(tupleName[0])
4.通過切片訪問特定範圍元素
print(tupleName[:])
5.不可修改、刪除
6.定義一個只有一個元素的元組
one_tuple=("one",)  //需要加入一個“,”
7.迴圈遍歷元組
for t in range(0,len(tupleName)):
    print(tupleName[t])
/for t in tupleName:
    print(t)
8.元組排序
newTupleName=sorted(tupleName)
  //排序後,會返回一個新的list,元組本身不會變
#####9.列表轉元組

tuple(listName)

#三、字典(dict)
#####1.含義
    動態結構(無序、可變)的一系列的-值對,每個鍵都和一個值相關聯,可用使用鍵來訪問相對應的值,將資訊關聯起來
    【Python不關心鍵值對的新增順序,只關心鍵和值的關聯關係】

#####2.格式:
<div>
    dict_name={
'key':'value',
~~
             }
</div>
    【value:可為:數字、字串、列表、字典;
    key值不能相同,後面的會覆蓋掉前面的】

#####3.訪問字典值
    dict_name['keyName']

#####4.新增鍵-值對
    dict_name['newKey']='newValue'

#####5.定義空字典
dict_name={}

#####6.修改字典中的值
```python
    dict_name['key']='newValue'
{//通過修改值判斷外星人移動距離
alien_0={'x_position':0,'y_position':25,'speed':"medium"}
    #將外星人速度調為‘fast’
alien_0['speed']='fast'
記錄外星人起始x軸位置
print("Original x-position:" + str(alien_0["x_position"]))
根據外星人速度決定移動多遠
if alien_0['x_position']=='slow':
        x_increment=1
elif alien_0["speed"]=='medium':
        x_increment=2
else:
        x_increment=3
將新位置賦給變數
alien_0['x_position']=alien_0['x_position']+x_increment
print("New x_position is:"+str(alien_0['x_position']))  }




<div class="se-preview-section-delimiter"></div>
7.刪除鍵-值
del dict ['key']
//鍵-值永久刪除了
8.遍歷字典
A.遍歷鍵-值對:
for key,value in dict_name.items():
//利用方法items()將變數key,value放到一個列表中,變數名應有意義!
//返回的為元組,訪問元組中鍵/值:
for item in dict_name.items():
itemy[0/1] 
B.遍歷鍵:
a.遍歷所有鍵:   for key in dict_name.keys( ):
b.按順序遍歷鍵:for key in sorted(dict_name.keys( )):
c.遍歷單個鍵:key_list=list(dict_name.keys())      key_list[]  
d.拿到每個鍵:key1,key2,key3,~=dict_name      print(key1,key2,key3,~)       //適用於鍵值對少的字典
C.遍歷所有值:      for value in dict_name.values( ):
a.為值去重:       for value in set(dict_name.values()):
b.通過value找key:      value_list=list(dict_name.values())
     result=key_list[ value_list.index[ "~" ] ]
#####7.刪除鍵-值
    del dict ['key']
    //鍵-值永久刪除了

#####8.遍歷字典
    A.遍歷鍵-值對:
```python
for key,value in dict_name.items():
//利用方法items()將變數key,value放到一個列表中,變數名應有意義!
//返回的為元組,訪問元組中鍵/值:
for item in dict_name.items():
itemy[0/1] 
B.遍歷鍵:
a.遍歷所有鍵:   for key in dict_name.keys( ):
b.按順序遍歷鍵:for key in sorted(dict_name.keys( )):
c.遍歷單個鍵:key_list=list(dict_name.keys())      key_list[]  
d.拿到每個鍵:key1,key2,key3,~=dict_name      print(key1,key2,key3,~)       //適用於鍵值對少的字典
C.遍歷所有值:      for value in dict_name.values( ):
a.為值去重:       for value in set(dict_name.values()):
b.通過value找key:      value_list=list(dict_name.values())
     result=key_list[ value_list.index[ "~" ] ]
9.清空字典

dicName.clear()

10.巢狀

A.字典列表:(外星人列表)
dicName1={‘key1’:“‘value1’,~}
dicName2={‘key1’:“‘value2’,~}
listName=[dicName1, dicName2]
B.列表字典:(描述每個披薩配料)
dicName={
‘listName’:[’ ‘,’ ‘]
}
for l_N in dicName[‘listName’]: //遍歷字典中指定列表
/for key,value in dicName.items(): //
for v in value: //遍歷整個列表字典
C.字典字典:(儲存使用者資訊)
dicName1={
‘dicName2’:{‘key’,’value’},
}

四、集合(set)

1.特點

可變序列,支援原位改變
可包含任意型別
任意巢狀
不允許有重複的物件(自動去重)

2.格式

name_set{ ‘set_0’,’set_1’,’set_2’ }

3.集合去重 //利用集合特性

–對列表去重
id_list = [ ‘id_0’,’id_1’,’id_2’,’id_3’ ]
id_set = set(id_list)
–對字串去重
string_set = set(“hello”)

4.建立空集合

none_set = set { }

5.增、刪、改、查

name_set = {‘小王’,’大王’}
– 增:
name_set.add(“Kevin”) //單個新增
name_set.update([“小廣”,”大廣”],[“WG”]) //新增的是序列
print(name_set)
– 刪:
name_set.remove(“WG”) //刪除不存在的元素報錯
name_set.discard(“WG”) //刪除不存在元素不會報錯
print(name_set)
– 改:
for n_s in name_set:
if n_s == “小王”:
name_set.remove(n_s)
name_set.add(“Kevin”)
print(name_set)

6.交、並集

name_set1 = {‘張三’,’李四’,’王五’}
name_set2 = {‘孫七’,’李四’}
– 交集:
name_set=name_set1 & name_set2
name_set=name_set1.intersection(name_set2)
– 並集:
name_set=name_set1 | name_set2
– 差級:
name_set=name_set1 - name_set2 //從name_set1中去掉交集
name_set=name_set2 - name_set1 //從name_set2中去掉交集
– 對稱差級: //並集-交集
name_set=name_set1 ^ name_set2