日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python数据结构:序列(列表[]、元组())与映射(字典{})语法总结

發布時間:2025/3/15 python 13 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python数据结构:序列(列表[]、元组())与映射(字典{})语法总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、概述:

Python中兩種基本的數據結構是序列和映射,序列包含:可變的列表和不可變的元組;而當序列不夠用時就出現了映射:字典。列表中的元素是可以變化的,元組里面的元素一旦初始化后就不可更改。列表和元組只是一類元數據的集合體,還不能滿足通過名字引用值的數據,故字典就充當了這個功能角色。

?

二、列表(list):

1.寫法示例:x=[1,2,3,4,5] y=['1','2','3','4','5']

?

?

2.索引:

x[0]

=>1?

y[0]

=>'1'

?

?

3.分片:x[:]

=>[1,2,3,4,5]?

x[0:3]

=>[1,2,3]?

x[0:4:2]

=>[1,3]

可以看出,第一個數字表示起始元素的索引值,第二個數字表示結束元素的值,但不包含它,第三個是步長。注意:這三個數字都可以是負值。

?

?

4.序列相加:x+y

=>[1, 2, 3, 4, 5, '1', '2', '3', '4', '5']

?

?

5.乘法:x*5

=>[1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5]

?

?

6.成員資格:?

1 in x?

=> True?

6 in x?

=> False

?

?

7.min,max,len:?

min(x)

=>1?

max(x)

=>5?

len(x)

=>5

?

?

8.list函數:list('Hello')?

=>['H','e','l','l','o']

?

?

9.元素賦值:x[0]=11?

=> x=[11,2,3,4,5]

?

?

10.刪除元素:del x[0]?

=> x=[2,3,4,5]

?

?

11.分片賦值:x[0:3]=[11,22,33]?

=> x=[11,22,33,4,5]

?

?

12.append: x.append(6)?

=> x=[1,2,3,4,5,6]

?

?

13.count: 查找x中元素1出現的次數: x.count(1)?

=> 1

?

?

14.extend:將一個列表追加到列表末尾: x.extend([6,7,8])?

=> x=[1,2,3,4,5,6,7,8]

?

?

15.index:找出某個元素的索引位置:x.index(2)=1

?

?

16.insert:將元素插入到指定索引前:x.insert(2,10)?

=> x=[1,2,10,3,4,5]

?

?

17.pop:移除列表中的一個元素,并返回這個元素: x.pop()

=>5?

x.pop(0)

=>1

?

?

18.remove:移除列表中某個值的第一個匹配項:x.remove(1)?

=>x=[2,3,4,5]

?

?

19.reverse:反向存放:x.reverse() => x=[5,4,3,2,1]

?

?

20.sort,sorted:將列表排序:x.reverse()?

=> x=[5,4,3,2,1]?

=> x.sort()?

=> x=[1,2,3,4,5]?

注意:sort并不返回任何值,即:?

z=x.sort()?

=>z = None.

如果你想對x排序,并且要保留x,有兩種方法共選擇:

(1)z=x[:]?

z.sort()?

=> z=[5,4,3,2,1]

(2)z=sorted(x)

?

?

21.高級排序:如果你希望按照某種特定的方式排序,可以將函數、方法名作為參數傳遞給sort.

x.sort(key=cmp,reverse=True) ,其中key和reverse叫做關鍵字參數,所以您也可以這樣寫:x.sort(reverse=True,key=cmp),也就是關鍵字參數可以任意調整參數順序。

說明:函數cmp(a,b),a>b =>1 , a<b =>-1, a=b =>0

任何適用于列表內元素的函數都可以作為key值傳遞進去,當然你也可以傳遞自定義的函數,個人感覺很像.net里面的委托。

?

三、元組

元組不可修改,字符串也是不可修改的,這個.net中的字符串是一個意思,每次對字符使用+時,都是重新申請了一段新的地址空間,所以我們在處理字符串頻繁修改型程序時一般都用StringBuilder.

由于元組和列表最大的不同就是不可修改,所以列表中的 9.元素賦值,10.刪除元素,11.分片賦值,12.append,14.extend,16.insert,17.pop,18.remove,19.reverse,20.sort,21.高級排序任何妄圖修改元組的函數都不支持。

?

1.寫法:x=1,2,3,4,5 或者 x=(1,2,3,4,5) 或者?

x=1, =>x =(1)

?

?

2.乘法:

x=(1,2,3,4,5)?

x*3?

=>(1,2,3,4,5,1,2,3,4,5,1,2,3,4,5)

?

?

3.tuple:tuple函數和list函數基本一致:tuple('Hello')

=>('H','e','l','l','o')

?

?

4.索引:元組也是序列的一種,所以他也可以用索引來訪問元素:?

x[0]?

=> 1

?

?

5.分片:元組也是序列的一種,所以他也可以用索引來分片:

x[0:2]

=>(1,2)

?

?

6.成員資格: 1 in x?

=> True?

6 in x?

=> False

?

?

7.min,max,len: min(x)

=>1?

max(x)

=>5?

len(x)?

=>5

?

?

8.count: 查找x中元素1出現的次數: x.count(1)?

=> 1

?

?

9.index:找出某個元素的索引位置:x.index(2)?

=> 1

?

四、字典

1.寫法: d={'a':1,'b':2}

?

?

2.dict函數:將鍵值對轉換成字典:?

items=[('a',1),('b',2)]?

d=dict(itmes)?

=> d={'a':1,'b':2}

?

?

3.另一種創建方式:d=dict(a=1,b=2)?

=> {'a':1,'b':2}

?

?

4.基本字典操作方法:

(1)求元素個數:len(d) => 2

(2)用鍵訪問值:d['a'] => 1

(3)修改值:d['a']=3

(4)刪除: del d['a']

(5)成員資格: 'a' in d

?

?

5.很有用的方法:格式化字符串

通常的字符串格式化:?

'i am %s ' % 'vertor'?

=> 'i am vertor'

而如果應字典格式化就可以實現類似.net中string.format()的功能了:

d={'name':'vertor','age'=20}

'i am %(name)s, and %(age)s years old' % d?

=> i am vertor, and 20 years old.

?

?

6.clear:清除所有元素

?

?

7.淺復制(shallow copy)copy函數:

d={'name':'verter',age:20,friends:['ali','qq','baidu']}

d2=d.copy()

d2['name']='smith' #用新的值替換原來的值

d2['friends'].remove('qq') #修改原來的值

=>d2

=>{'name':'smith',age:20,friends:['ali','baidu']}

=>d

=>{'name':'verter',age:20,friends:['ali','baidu']}

可以看到,在副本中替換值不會影響到原始字典;而如果修改了副本,原始字典也會被修改。

如果要避免這種情況就需要用到深復制:deepcopy

?

?

8.深復制(deepcopy):deepcopy函數

?

?

9.fromkeys:使用給定的鍵建立新的字典

{}.fromkeys(['name','age'])

=>{'name':None,'age':None}

dict.fromkeys(['name','age'])

=>{'name':None,'age':None}

dict.fromkeys(['name','age'],'verter')

=>{'name':'verter','age':'verter'}

?

?

10.get:另一種用鍵訪問元素值的方法

d={'name':'verter','age':20}

=>d.get('name')

=>'verter'

=>d.get('friends')

=>None

注意:get與d['friends']的區別是后者會拋出KeyError異常,而get不會,他只是返回None.

?

?

11.has_key:

d={'name':'verter','age':20}

=>d.has_key('name')

=>True

注意:python3拋棄了這個API.

?

?

12.items和iteritems

(1)items將字典所有以<strong>列表</strong>的形式返回。

d={'name':'verter','age':20}

=>d.items()

=>[('name', 'verter'), ('age', 20)]

(2)iteritems作用大致相同,不過它是返回一個迭代器對象而不是列表

d={'name':'verter','age':20}

=>it=d.iteritems()

=>list(it)

=>[('name', 'verter'), ('age', 20)]

注意:在python3.0中將iteritems私有化了,變成了__iter__(),不知何故,難道這個功能太蛋疼,被拋棄了?

?

13.keys和iterkeys

d={'name':'verter','age':20}

=>for k in x.keys(): print(k)

=>'name'

=>'age'

同理:iterkeys返回迭代器,并且也被python3.0拋棄了,不再提供此方法了。

?

14.pop:返回對應鍵,并將他從字典中移除

d.pop('name')

=>'verter'

=>d

=>{'age':20}

?

15.popitem:不帶參數,彈出一個隨機元素。

d.popitem()

=>{'name','verter'}

這個對事先不知道鍵的情況下很有用。

?

16.setdefault:設置默認值。

?

17.update:利用一個字段更新另外一個字典,當然是更新對應鍵的值

d={'name':'verter','age':20}

=>d2={'name':'verter2'}

=>d.update(d2)

=>d

=>{'name':'verter2','age':20}

?

18.values和itevalues

(1)values:已列表形式返回字典中的值

(2)itervalues:返回值的迭代器

注意:python3.0還是拋棄了這個API.

總結

以上是生活随笔為你收集整理的Python数据结构:序列(列表[]、元组())与映射(字典{})语法总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。