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

歡迎訪問 生活随笔!

生活随笔

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

python

Python之数据结构

發布時間:2023/12/29 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python之数据结构 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

1.通用序列操作

1.1 索引

1.2切片

1.3序列相加

1.4 序列重復

1.5 成員資格

2.列表

2.1 列表更新

2.2 增加元素

2.3 刪除元素

2.4 查找元素

2.5 隊列的其他操作

3.元組

3.1 元組定義

3.2 刪除元組

3.3 元組的其他操作

4.字典

4.1 字典定義

4.2使用字典

4.3 字典的其他操作


1.通用序列操作

1.1 索引

序列的每個元素都分配了一個數字,代表了它在序列中的位置。

Python中的索引從“0”開始,第一個是“0”,第二個是“1”,以此類推。

x = [1,2,3,4]print(x[0]) print(x[1])

執行結果如下:

1 2

索引不僅可以從左往右編號,也可以從右往左編號。

x = [1,2,3,4]print(x[-1]) print(x[-3])

執行結果如下:

4 2

1.2切片

Python中所有的數據類型都可以進行切片操作。

# 列表 x = [1,2,3,4,5,6]print(x[0:3]) print(x[1:3])# 元組 x2 = (1,2,3,4,5,6)print(x2[0:3]) print(x2[1:3])#字符串 x3 = "123456"print(x3[0:3]) print(x3[1:3])

執行結果如下:

[1,2,3] [2,3](1,2,3) (2,3)123 23

從結果可以看出切片操作實現需要提供兩個索引作為邊界,第一個元素包含在切片內,第二個元素不包含在內。類似于數學區間[a,b)。

同時,切片也支持負數,即從右往左順序索引獲取切片。

# -*- coding: UTF-8 -*- # 列表 x1 = [1,2,3,4]print (x1[-3:3])# 元組 x2 = (1,2,3,4)print (x2[-3:3])# 字符串 x3 = "1234"print (x3[-3:3])

執行結果如下:

[2, 3] (2, 3) 23

序列的索引下標可以超出其真實的索引長度。

# -*- coding: UTF-8 -*- # 列表 x1 = [1,2,3,4]print (x1[1:10])# 元組 x2 = (1,2,3,4)print (x2[1:10])# 字符串 x3 = "1234"print (x3[1:10])

執行結果如下:

[2, 3, 4] (2, 3, 4) 234

所有的索引的切片都有個默認的參數“a”,“b”。“a”的默認值為0,“b”的默認值為最后一個元素

# -*- coding: UTF-8 -*- # 列表 x1 = [1,2,3,4]print (x1[3:]) print (x1[:3]) # 元組 x2 = (1,2,3,4)print (x2[3:]) print (x2[:3])# 字符串 x3 = "1234"print (x3[3:]) print (x3[:3])

執行結果如下:

[4] [1, 2, 3] (4,) (1, 2, 3) 4 123

如果切片的兩個索引都設置為空,則獲取整個序列。

# -*- coding: UTF-8 -*- # 列表 x1 = [1,2,3,4]print (x1[:])# 元組 x2 = (1,2,3,4)print (x2[:])# 字符串 x3 = "1234"print (x3[:])

執行結果如下:

[1, 2, 3, 4] (1, 2, 3, 4) 1234

根據起始位置和結束位置來獲取任意的序列,不過這種序列都是連續的,也可以獲取非連續的序列,Python的切片提供了第三個參數:步長。默認情況下為1。如果設置步長為2,得到的序列是從開始到結束每隔“1”個元素的序列。步長的參數不支持“0”。

# -*- coding: UTF-8 -*- # 列表 x1 = [1,2,3,4,5,6]print (x1[::1]) print (x1[::2]) print (x1[::0])

執行結果如下:

[1, 2, 3, 4, 5, 6] [1, 3, 5] Traceback (most recent call last):File "F:/PYthon/test.py", line 8, in <module>print (x1[::0]) ValueError: slice step cannot be zero

當負數作為步長時,Python會從序列的尾部開始向左獲取元素,直到第一個元素為止。

# -*- coding: UTF-8 -*- # 列表 x1 = [1,2,3,4,5,6]print (x1[::-1]) print (x1[::-2])

執行結果如下:

[6, 5, 4, 3, 2, 1] [6, 4, 2]

1.3序列相加

序列之間可以使用“+”進行連接操作。

# -*- coding: UTF-8 -*- # 列表 x1 = [1,2,3,4,]+[5,6,7,8] print (x1)

執行結果如下:

[1, 2, 3, 4, 5, 6, 7, 8]

不同類型的序列不可以做連接。

# -*- coding: UTF-8 -*- # 列表 x1 = [1,2,3,4,]+(5,6,7,8) print (x1)

執行結果如下:

TypeError: can only concatenate list (not "tuple") to list

1.4 序列重復

序列之間可以用“*”做乘法。

# -*- coding: UTF-8 -*- # 列表 x1 = [1,2,3,4,] * 3 print (x1)

執行結果如下:

[1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]

1.5 成員資格

成員資格是指判斷一個元素是否包含在序列中,Python用運算符“in”來判斷。“in”運算符會判斷左邊的元素是否包含在右邊的序列中,如果包含則返回ture,反之,返回false。

# -*- coding: UTF-8 -*- # 列表 x1 = [1,2,3,4,5]print (3 in x1) print (9 in x1)

執行結果如下:

True False

注意:只有當元素的類型和值都完全一致,才算包含在序列中,比如數字5和字符串“5”就是兩種不同的元素。

# -*- coding: UTF-8 -*-print (5 in "123456")

執行結果如下:

TypeError: 'in <string>' requires string as left operand, not int

Python解釋器要求如果“in”操作符右邊是字符串,那么左邊也必須是字符串。

1.6 長度,最小值,最大值和求和。

#! /usr/bin/env python3 # -*- coding: utf-8 -*-# 列表 x1 = [1,2,3,4,5,6]print ("列表長度",len(x1)) print ("列表最小值",min(x1)) print ("列表最大值",max(x1)) print ("列表元素和",sum(x1))#元組 x2 = (1,2,3,4,5,6) print ("列表長度",len(x2)) print ("列表最小值",min(x2)) print ("列表最大值",max(x2)) print ("列表元素和",sum(x2))#字符串 x3 = "123456" print ("列表長度",len(x3)) print ("列表最小值",min(x3)) print ("列表最大值",max(x3)) print ("列表元素和",sum(x3))

執行結果如下:

Traceback (most recent call last):File "F:/PYthon/test.py", line 24, in <module>print ("列表元素和",sum(x3)) TypeError: unsupported operand type(s) for +: 'int' and 'str'列表長度 6 列表最小值 1 列表最大值 6 列表元素和 21列表長度 6 列表最小值 1 列表最大值 6 列表元素和 21列表長度 6 列表最小值 1 列表最大值 6

注意:sum函數求和要求的是序列的元素必須都是"int",由于字符串序列的元素都是字符串,所以sum函數無法對字符串序列求和。

2.列表

2.1 列表更新

列表可以通過索引獲取其中的單個元素,也可以通過索引更新其中的元素,使用方法就和變量賦值一樣。

# -*- coding: utf-8 -*-x = [1,2,3,4,5,6]x[0]=2print (x)

執行結果如下:

[2, 2, 3, 4, 5, 6]

更新的索引必須是已經存在的索引,不能超出列表長度。

# -*- coding: utf-8 -*-x = [1,2,3,4,5,6]x[10]=2print (x)

執行結果如下:

IndexError: list assignment index out of range

Python解釋器會提示我們索引超出列表范圍。

2.2 增加元素

列表不能通過索引來添加元素,索引只能修改現有的元素,使用append方法在列表最后添加新元素,append每次只能夠增加一個元素,想要增加多個元素,使用extend方法。

# -*- coding: utf-8 -*-x = [1,2,3,4,5,6]x.append(7) print (x)x.extend([8,9]) print (x)

執行結果如下:

[1, 2, 3, 4, 5, 6, 7] [1, 2, 3, 4, 5, 6, 7, 8, 9]

append和extend都只能在列表最后添加元素。

insert方法可以在中間插入元素。一次只能夠插入一個元素。(也可以在最后添加元素)

# -*- coding: utf-8 -*-x = [1,2,3,4,5,6]x.insert(2,3)print (x)

執行結果如下:

[1, 2, 3, 3, 4, 5, 6]

insert方法需要兩個參數,第一個參數表示要插入元素的位置,第二個表示的是要插入元素的值。

2.3 刪除元素

1.pop函數可以刪除列表的一個元素,默認是最后一個,也可以指定位置。

# -*- coding: utf-8 -*-x = [1,2,3,4,5,6]#默認位置 x.pop() print (x)#指定位置 x.pop(1) print (x)

執行結果如下:

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

2.remove函數可以根據內容來刪除元素。

remove函數會刪除查找到的第一個元素,并且沒有返回值。

# -*- coding: utf-8 -*-x = [1,2,3,4,4,6]x.remove (4) print (x)

執行結果如下:

[1, 2, 3, 4, 6]

3.del也可以用來刪除列表元素。

del后邊指定的是列表的元素和索引。

# -*- coding: utf-8 -*-x = ["A","B","C","D","E","F","G"]del x[2] print (x)

執行結果如下:

['A', 'B', 'D', 'E', 'F', 'G']

2.4 查找元素

index方法用于查找元素在列表中的索引位置。如果查找的元素不在列表,就會報錯。

# -*- coding: utf-8 -*-x = ["A","B","C","D","E","F","G"]#元素在列表中 print (x.index("A"))#元素不在列表中 print (x.index("H"))

執行結果如下:

ValueError: 'H' is not in list 0

2.5 隊列的其他操作

1.reverse方法可以反轉隊形。

和[::-1]類似,但是reverse方法修改的是原來的隊列,并且沒有返回值。

# -*- coding: utf-8 -*-x = ["A","B","C","D","E","F","G"]x.reverse()print (x)

執行結果如下:

['G', 'F', 'E', 'D', 'C', 'B', 'A']

2.count方法用來統計列表中一個元素出現的次數。

# -*- coding: utf-8 -*-x = [1,2,1,5,2,6,5,5,2,6,6,5,5,2,3,6]x.count(5)print (x.count(5))

執行結果如下:

5

3.sort方法用于對列表進行排序。

# -*- coding: utf-8 -*-x = [1,2,1,5,2,6,5,5,2,6,6,5,5,2,3,6]x.sort()print (x)

執行結果如下:

[1, 1, 2, 2, 2, 2, 3, 5, 5, 5, 5, 5, 6, 6, 6, 6]

3.元組

3.1 元組定義

定義元組時只需要用()把元素括起來,每個元素中間用“,”隔開。

如果只有一個元素,后邊必須帶“,”。否則,不能夠定義為元組。

# -*- coding: utf-8 -*-x = (1,2,3,4,5) print (x) print (type(x))#不帶“,” y = (1) print (y) print (type(y))#帶“,” z = (1,) print (z) print (type(z))

執行結果如下:

(1, 2, 3, 4, 5) <type 'tuple'> 1 <type 'int'> (1,) <type 'tuple'>

3.2 刪除元組

元組不能夠修改,也不能單獨的刪除元組的某個元素,只能刪除整個元組。

# -*- coding: utf-8 -*-x = (1,2,3,4,5)del x print (x)

執行結果如下:

NameError: name 'x' is not defined

這個提示說明變量“x”沒有被定義,而我們成功刪除了元組x。

3.3 元組的其他操作

1.count方法和列表一樣,可以統計某個元素在一個元組中出現的次數。

# -*- coding: utf-8 -*-x = (1,2,3,4,5,5,4,1,4,5,2,3,6,8)print (x.count(2))

執行結果如下:

2

2.index方法跟列表中的一樣,可以查找某個元素在元組中的索引位置。

# -*- coding: utf-8 -*-x = (1,2,3,4,5)print (x.index(3))

執行結果如下:

2

4.字典

4.1 字典定義

字典類型和它的名字一樣,可以像查字典一樣去查找。其他語言也有類似的類型,如PHP的Array,Java中的HashMap。

# -*- coding: utf-8 -*-zd = {"I":"我","YOU":"你","HE":"他","SHE":"她", }print (zd,type(zd))

執行結果如下:

{"I": "我", "YOU": "你", "HE": "他", "SHE": "她"}

字典的元素都是成對出現的,(","的左邊成為鍵,右邊成為值),元素和元素之間由“,”構成。字典的鍵必須是唯一的,如果是空字典,可以直接使用{}。

4.2使用字典

在Python中,字典其實就是一組鍵值對。字典和列表都是可修改結構,對字典的修改和列表類似。

# -*- coding: utf-8 -*- zd = {"I": "我","YOU": "你","HE": "他","SHE": "她", } zd["HE"] = "他們" print (zd)

執行結果如下:

{"I": "我", "YOU": "你", "HE": "他們", "SHE": "她"}

刪除字典中的元素

# -*- coding: utf-8 -*- zd = {"I": "我","YOU": "你","HE": "他","SHE": "她", }del zd["HE"] print (zd)

執行結果如下:

{"I": "我", "YOU": "你", "SHE": "她"}

4.3 字典的其他操作

1.clear可以用于清空字典的所有元素。

# -*- coding: utf-8 -*- zd = {"I": "我","YOU": "你","HE": "他","SHE": "她", }zd.clear() print (zd)

執行結果如下:

{}

2.使用copy方法完整的復制了新的副本。

# -*- coding: utf-8 -*- zd1 = {"I": "我","YOU": "你","HE": "他","SHE": "她", }zd2 = zd1.copy() print (zd1)del zd2["SHE"] print (zd2)

執行結果如下:

{'I': '我', 'YOU': '你', 'HE': '他們', 'SHE': '她'} {'I': '我', 'YOU': '你', 'HE': '他們'}

使用copy對獲取到的字典做修改,原字典不受影響。

3.fromkeys方法用于創建一個新字典,用序列中的元素作為鍵,第二個參數為字典所有參數對應的初始值。

# -*- coding: utf-8 -*- seq =("red","black","blue")#不指定默認值 color1 = dict.fromkeys(seq) print (color1)#指定默認值 color2 = dict.fromkeys(seq,6) print (color2) {'red': None,'black': None,'blue': None} {'red': 6,'black': 6,'blue': 6}

4.使用get方法返回鍵對應的值,如果字典不存在對應的鍵值則返回默認值。

# -*- coding: utf-8 -*- zd1 = {"I": "我","YOU": "你","HE": "他","SHE": "她", }print (zd1.get("HE"))print (zd1.get("IT"))print (zd1.get("IT","未知"))

執行結果如下:

HE : 他 IT : None IT : 未知

5.使用keys方法返回一個列表,里面包含了字典的所有鍵。

# -*- coding: utf-8 -*- zd1 = {"I": "我","YOU": "你","HE": "他","SHE": "她", }print(zd1.keys())

執行結果如下:

dict_keys(['I', 'YOU', 'HE', 'SHE'])

6.使用values方法返回一個列表,里邊包含了字典的所有值。

# -*- coding: utf-8 -*- zd1 = {"I": "我","YOU": "你","HE": "他","SHE": "她", }print(zd1.values())

執行結果如下:

dict_values(['我', '你', '他', '她'])

7.使用items方法返回一個列表,里邊包含了所有鍵的列表和所有值的列表。

# -*- coding: utf-8 -*- zd1 = {"I": "我","YOU": "你","HE": "他","SHE": "她", }print(zd1.items())

執行結果如下:

dict_items([('I': '我'), ('YOU': '你'),('HE': '他'),('SHE': '她')])

由于字典不能直接應用于for循環,可以使用items方法來遍歷字典。

# -*- coding: utf-8 -*- zd1 = {"I": "我","YOU": "你","HE": "他","SHE": "她", }for k ,v in zd1.items():print(k, "=>",v)

執行結果如下:

I => 我 YOU => 你 HE => 他 SHE => 她

總結

以上是生活随笔為你收集整理的Python之数据结构的全部內容,希望文章能夠幫你解決所遇到的問題。

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