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

歡迎訪問 生活随笔!

生活随笔

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

python

python常用数据结构_Python入门: 数据结构大汇总

發布時間:2025/4/5 python 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python常用数据结构_Python入门: 数据结构大汇总 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、列表

1.列表的創建

列表是有序集合,沒有固定大小,能夠保存任意數量任意類型的 Python 對象,語法為?[元素1, 元素2, ..., 元素n]。關鍵點是 “?中括號 [ ]”和 “逗號 ,”

中括號 把所有元素綁在一起

逗號 將每個元素一一分開利用range()創建列表

利用推導式創建列表

注意:

由于list的元素可以是任何對象,因此列表中所保存的是對象的指針。即使保存一個簡單的[1,2,3],也有3個指針和3個整數對象。

x = [a] * 4操作中,只是創建4個指向list的引用,所以一旦a改變,x中4個a也會隨之改變。

2.?操作列表元素

列表不像元組,列表內容可更改 (mutable),因此附加 (append, extend)、插入 (insert)、刪除 (remove, pop) 這些操作都可以用在它身上。list.append(obj)?在列表末尾添加新的對象,只接受一個參數,參數可以是任何數據類型,被追加的元素在 list 中保持著原結構類型;

list.extend(seq)?在列表末尾一次性追加另一個序列中的多個值(用新列表擴展原來的列表);

list.insert(index, obj)?在編號?index?位置插入?obj

list.remove(obj)?移除列表中某個值的第一個匹配項

del var1[, var2 ……]?刪除單個或多個對象

列表切片通用寫法是 list[start : stop : step]notebook實例運行結果1

列表的常用操作符:

(1)等號操作符:==

(2)連接操作符+,將兩個list相加,需要創建新的 list 對象,從而需要消耗額外的內存?;

(3)重復操作符 *

(4)成員關系操作符?in、not in

list.count(obj) 統計某個元素在列表中出現的次數

list.index(x[, start[, end]]) 從列表中找出某個值第一個匹配項的索引位置

list.reverse() 反向列表中元素

list.sort(key=None, reverse=False) 對原列表進行排序 ( key -- 主要是用來進行比較的元素,只有一個參數,具體的函數的參數就是取自于可迭代對象中,指定可迭代對象中的一個元素來進行排序;reverse -- 排序規則,reverse = True 降序, reverse = False 升序(默認);該方法沒有返回值,但是會對列表的對象進行排序 )notebook實例運行結果2

二、元組

1. 創建和訪問一個元組

定義語法為:(元素1, 元素2, ..., 元素n),小括號把所有元素綁在一起,逗號將每個元素一一分開。Python 的元組與列表類似,不同之處在于tuple被創建后就不能對其進行修改,類似字符串。

元組使用小括號,列表使用方括號。

元組與列表類似,也用整數來對它進行索引 (indexing) 和切片 (slicing)

創建元組可以用小括號 (),也可以什么都不用,為了可讀性,建議還是用 ()。

元組中只包含一個元素時,需要在元素后面添加逗號,否則括號會被當作運算符使用notebook實例運行結果3

2.?操作元組元素

元組有不可更改 (immutable) 的性質,因此不能直接給元組的元素賦值,但是只要元組中的元素可更改 (mutable),那么我們可以直接更改其元素,注意這跟賦值其元素不同等號操作符:== ,只有成員、成員位置都相同時才返回True

連接操作符?+ ,首尾拼接

重復操作符?* ,復制拼接

成員關系操作符?in、not in

元組大小和內容都不可更改,因此只有 count 和 index 兩種方法

解壓元組notebook實例運行結果4

三、字符串

1. 字符串的定義Python 中字符串被定義為引號之間的字符集合。

Python 支持使用成對的 單引號 或 雙引號

如果字符串中需要出現單引號或雙引號,可以使用轉義符號\對字符串中的符號進行轉義Python 的常用轉義字符

2. 操作字符串類似于元組具有不可修改性

從 0 開始 (和 Java 一樣)

切片通常寫成?start:end?這種形式,包括「start?索引」對應的元素,不包括「end索引」對應的元素。

索引值可正可負,正索引從 0 開始,從左往右;負索引從 -1 開始,從右往左。使用負數索引時,會從最后一個元素開始計數。最后一個元素的位置編號是 -1。notebook實例運行結果5capitalize()?將字符串的第一個字符轉換為大寫

lower()?轉換字符串中所有大寫字符為小寫。

upper()?轉換字符串中的小寫字母為大寫。

swapcase()?將字符串中大寫轉換為小寫,小寫轉換為大寫。

count(str, beg= 0,end=len(string))?返回str在 string 里面出現的次數,如果beg或者end指定則返回指定范圍內str出現的次數。

endswith(suffix, beg=0, end=len(string))?檢查字符串是否以指定子字符串?suffix?結束,如果是,返回 True,否則返回 False。如果?beg?和?end?指定值,則在指定范圍內檢查。

startswith(substr, beg=0,end=len(string))?檢查字符串是否以指定子字符串?substr?開頭,如果是,返回 True,否則返回 False。如果?beg?和?end?指定值,則在指定范圍內檢查

find(str, beg=0, end=len(string))?檢測?str?是否包含在字符串中,如果指定范圍?beg?和?end,則檢查是否包含在指定范圍內,如果包含,返回開始的索引值,否則返回 -1。

rfind(str, beg=0,end=len(string))?類似于?find()?函數,不過是從右邊開始查找。

isnumeric()?如果字符串中只包含數字字符,則返回 True,否則返回 False

ljust(width[, fillchar])返回一個原字符串左對齊,并使用fillchar(默認空格)填充至長度width的新字符串。

rjust(width[, fillchar])返回一個原字符串右對齊,并使用fillchar(默認空格)填充至長度width的新字符串

lstrip([chars])?截掉字符串左邊的空格或指定字符。

rstrip([chars])?刪除字符串末尾的空格或指定字符。

strip([chars])?在字符串上執行lstrip()和rstrip()。

partition(sub)?找到子字符串sub,把字符串分為一個三元組(pre_sub,sub,fol_sub),如果字符串中不包含sub則返回('原字符串','','')。

rpartition(sub)類似于partition()方法,不過是從右邊開始查找

replace(old, new [, max])?把 將字符串中的old替換成new,如果max指定,則替換不超過max次。

split(str="", num)?不帶參數默認是以空格為分隔符切片字符串,如果num參數有設置,則僅分隔num個子字符串,返回切片后的子字符串拼接的列表。

splitlines([keepends])?按照行('\r', '\r\n', \n')分隔,返回一個包含各行作為元素的列表,如果參數keepends為 False,不包含換行符,如果為 True,則保留換行符

maketrans(intab, outtab)?創建字符映射的轉換表,第一個參數是字符串,表示需要轉換的字符,第二個參數也是字符串表示轉換的目標。

translate(table, deletechars="")?根據參數table給出的表,轉換字符串的字符,要過濾掉的字符放到deletechars參數中

3. 字符串格式化format?格式化函數Python 字符串格式化符號

格式化操作符輔助指令

四、字典

p.s. : 可變類型與不可變類型序列是以連續的整數為索引,與此不同的是,字典以"關鍵字"為索引,關鍵字可以是任意不可變類型,通常用字符串或數值。

字典是 Python 唯一的一個?映射類型,字符串、元組、列表屬于序列類型。

判斷是否數據類型X是否為可變類型的方法為:hash(X)。(數值、字符和元組 都能被哈希,因此它們是不可變類型;列表、集合、字典不能被哈希,因此它是可變類型)

1.字典的定義

字典 是無序的 鍵:值(key:value)對集合,鍵必須是互不相同的(在同一個字典之內)。dict?內部存放的順序和?key?放入的順序是沒有關系的。

dict?查找和插入的速度極快,不會隨著?key?的增加而增加,但是需要占用大量的內存。

字典 定義語法為?{元素1, 元素2, ..., 元素n}其中每一個元素是一個「鍵值對」-- 鍵:值 (key:value)

關鍵點是「大括號 {}」,「逗號 ,」和「冒號 :」

大括號 -- 把所有元素綁在一起

逗號 -- 將每個鍵值對分開

冒號 -- 將鍵和值分開

2. 創建和訪問字典如果我們取的鍵在字典中不存在,會直接報錯KeyError通過構造函數dict()?創建一個空的字典,通過key直接把數據放入字典中,但一個key只能對應一個value,多次對一個key放入 value,后面的值會把前面的值沖掉notebook實例運行結果6

dict.fromkeys(seq[, value])?用于創建一個新字典,以序列?seq?中元素做字典的鍵,value?為字典所有鍵對應的初始值notebook實例運行結果7

dict.keys()返回一個可迭代對象,可以使用?list()?來轉換為列表,列表為字典中的所有鍵。

dict.values()返回一個迭代器,可以使用?list()?來轉換為列表,列表為字典中的所有值

dict.items()以列表返回可遍歷的 (鍵, 值) 元組數組

dict.get(key, default=None)?返回指定鍵的值,如果值不在字典中返回默認值

dict.setdefault(key, default=None)和get()方法 類似, 如果鍵不存在于字典中,將會添加鍵并將值設為默認值

key in dict?in?操作符用于判斷鍵是否存在于字典中,如果鍵在字典 dict 里返回true,否則返回false。而not in操作符剛好相反,如果鍵在字典 dict 里返回false,否則返回true

dict.pop(key[,default])刪除字典給定鍵?key?所對應的值,返回值為被刪除的值。key?值必須給出。若key不存在,則返回?default?值

del dict[key]?刪除字典給定鍵?key?所對應的值

dict.popitem()隨機返回并刪除字典中的一對鍵和值,如果字典已經為空,卻調用了此方法,就報出KeyError異常

dict.clear()用于刪除字典內所有元素

dict.copy()返回一個字典的淺復制直接賦值和 copy 的區別dict.update(dict2)把字典參數?dict2?的?key:value對 更新到字典?dict?里

五、集合

Python 中set與dict類似,也是一組key的集合,但不存儲value。由于key不能重復,所以,在set中,沒有重復的key。故集合的兩個特點:無序 (unordered) 和唯一 (unique)

1. 集合的創建先創建對象再加入元素。

在創建空集合的時候只能使用s = set(),因為s = {}創建的是空字典

直接把一堆元素用花括號括起來{元素1, 元素2, ..., 元素n},重復元素在set中會被自動被過濾。

使用set(value)工廠函數,把列表或元組轉換成集合

由于 set 存儲的是無序集合,所以我們不可以為集合創建索引或執行切片(slice)操作,也沒有鍵(keys)可用來獲取集合中元素的值,但是可以判斷一個元素是否在集合中

2. 操作集合元素可以使用len()內建函數得到集合的大小。

可以使用for把集合中的數據一個個讀取出來。

可以通過in或not in判斷一個元素是否在集合中已經存在

set.add(elmnt)用于給集合添加元素,如果添加的元素在集合中已存在,則不執行任何操作

set.update(set)用于修改當前集合,可以添加新的元素或集合到當前集合中,如果添加的元素在集合中已存在,則該元素只會出現一次,重復的會忽略

set.remove(item)?用于移除集合中的指定元素。如果元素不存在,則會發生錯誤

set.discard(value)?用于移除指定的集合元素。remove()?方法在移除一個不存在的元素時會發生錯誤,而?discard()?方法不會

set.pop()?用于隨機移除一個元素

由于 set 是無序和無重復元素的集合,所以兩個或多個 set 可以做數學意義上的集合操作:

(1)set.intersection(set1, set2)?、set1 & set2? 返回兩個集合的交集,set.intersection_update(set1, set2)?交集,在原始的集合上移除不重疊的元素;

(2)set.union(set1, set2)、 set1 | set2?返回兩個集合的并集;

(3)set.difference(set)、?set1 - set2?返回集合的差集,set.difference_update(set)?直接在原來的集合中移除元素,沒有返回值;

(4)set.symmetric_difference(set),set1 ^ set2返回集合的異或,set.symmetric_difference_update(set)移除當前集合中在另外一個指定集合相同的元素,并將另外一個指定集合中不同的元素插入到當前集合中;

(5)set.issubset(set)、set1 <= set2判斷集合是不是被其他集合包含,如果是則返回 True,否則返回 False;

(6)set.issuperset(set)、set1 >= set2用于判斷集合是不是包含其他集合,如果是則返回 True,否則返回 False;

(7)set.isdisjoint(set)?用于判斷兩個集合是不是不相交,如果是返回 True,否則返回 False

六、序列

在 Python 中,序列類型包括字符串、列表、元組、集合和字典,這些序列支持一些通用的操作,但比較特殊的是,集合和字典不支持索引、切片、相加和相乘操作。

針對序列的內置函數list(sub)?把一個可迭代對象轉換為列表。

tuple(sub)?把一個可迭代對象轉換為元組。

str(obj)?把obj對象轉換為字符串

len(s)?返回對象(字符、列表、元組等)長度或元素個數,s 為對象

zip(iter1 [,iter2 [...]])

(1)用于將可迭代的對象作為參數,將對象中對應的元素打包成一個個元組,然后返回由這些元組組成的對象,這樣做的好處是節約了不少的內存。

(2)我們可以使用?list()?轉換來輸出列表。

(3)如果各個迭代器的元素個數不一致,則返回列表長度與最短的對象相同,利用?*?號操作符,可以將元組解壓為列表。

notebook實例運行結果1

總結

以上是生活随笔為你收集整理的python常用数据结构_Python入门: 数据结构大汇总的全部內容,希望文章能夠幫你解決所遇到的問題。

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