最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python常用數(shù)據(jù)結構和公共方法技巧總結

 更新時間:2022年08月09日 16:09:59   作者:十八歲討厭編程???????  
這篇文章主要介紹了Python常用數(shù)據(jù)結構和公共方法技巧總結,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下

1. 列表

1.1 列表的定義

  • List(列表) 是Python 中使用最頻繁的數(shù)據(jù)類型,在其他語言中通常叫做數(shù)組
  • 專門用于存儲一串 信息
  • 列表用[] 定義,數(shù)據(jù)之間使用, 分隔
  • 列表的索引0 開始
    • 索引就是數(shù)據(jù)在列表中的位置編號,索引又可以被稱為下標

注意:從列表中取值時,如果 超出索引范圍,程序會報錯

name_list = ["zhangsan", "lisi", "wangwu"]

1.2 列表常用操作

  • ipython3 中定義一個列表,例如:name_list = []
  • 輸入name_list. 按下TAB 鍵,ipython 會提示列表能夠使用的方法如下:
In [1]: name_list.
name_list.append name_list.count name_list.insert name_list.reverse
name_list.clear name_list.extend name_list.pop name_list.sort
name_list.copy name_list.index name_list.remove

序號

分類

關鍵字 / 函數(shù) / 方法

說明

1

增加

列表.insert(索引, 數(shù)據(jù))

在指定位置插入數(shù)據(jù)

  

列表.append(數(shù)據(jù))

在末尾追加數(shù)據(jù)

  

列表.extend(列表2)

將列表2 的數(shù)據(jù)追加到列表

2

修改

列表[索引] = 數(shù)據(jù)

修改指定索引的數(shù)據(jù)

3

刪除

del 列表[索引]

刪除指定索引的數(shù)據(jù)

  

列表.remove[數(shù)據(jù)]

刪除第一個出現(xiàn)的指定數(shù)據(jù)

  

列表.pop

刪除末尾數(shù)據(jù)

  

列表.pop(索引)

刪除指定索引數(shù)據(jù)

  

列表.clear

清空列表

4

統(tǒng)計

len(列表)

列表長度

  

列表.count(數(shù)據(jù))

數(shù)據(jù)在列表中出現(xiàn)的次數(shù)

5

排序

列表.sort()

升序排序

  

列表.sort(reverse=True)

降序排序

  

列表.reverse()

逆序、反轉

del 關鍵字(科普):

  • 使用del 關鍵字(delete) 同樣可以刪除列表中元素
  • del 關鍵字本質(zhì)上是用來將一個變量從內(nèi)存中刪除的
  • 如果使用del 關鍵字將變量從內(nèi)存中刪除,后續(xù)的代碼就不能再使用這個變量了
del name_list[1]

在日常開發(fā)中,要從列表刪除數(shù)據(jù),建議 使用列表提供的方法

關鍵字、函數(shù)和方法(科普):

關鍵字是 Python 內(nèi)置的、具有特殊意義的標識符

關鍵字后面不需要使用括號

函數(shù)封裝了獨立功能,可以直接調(diào)用

函數(shù)名(參數(shù))

函數(shù)需要死記硬背

  • 方法和函數(shù)類似,同樣是封裝了獨立的功能
  • 方法需要通過對象來調(diào)用,表示針對這個對象要做的操作

對象.方法名(參數(shù))

在變量后面輸入 .,然后選擇針對這個變量要執(zhí)行的操作,記憶起來比函數(shù)要簡單很多

1.3 循環(huán)遍歷

  • 遍歷 就是 從頭到尾依次 從 列表 中獲取數(shù)據(jù)
    • 循環(huán)體內(nèi)部針對每一個元素,執(zhí)行相同的操作
  • Python 中為了提高列表的遍歷效率,專門提供的 迭代 iteration 遍歷
  • 使用for 就能夠?qū)崿F(xiàn)迭代遍歷
# for 循環(huán)內(nèi)部使用的變量 in 列表
for name in name_list:

循環(huán)內(nèi)部針對列表元素進行操作
print(name)

1.4 應用場景

  • 盡管Python列表中可以存儲不同類型的數(shù)據(jù)
  • 但是在開發(fā)中,更多的應用場景是
    • 列表存儲相同類型的數(shù)據(jù)
    • 通過迭代遍歷,在循環(huán)體內(nèi)部,針對列表中的每一項元素,執(zhí)行相同的操作

2. 元組

2.1 元組的定義

  • Tuple(元組)與列表類似,不同之處在于元組的元素不能修改
    • 元組表示多個元素組成的序列
    • 元組Python 開發(fā)中,有特定的應用場景
  • 用于存儲一串 信息,數(shù)據(jù)之間使用, 分隔
  • 元組用() 定義
  • 元組的索引0 開始
    • 索引就是數(shù)據(jù)在元組中的位置編號
info_tuple = ("zhangsan", 18, 1.75)

創(chuàng)建空元組:

info_tuple = ()

元組中只包含一個元素時,需要在元素后面添加逗號:

info_tuple = (50, )

2.2 元組常用操作

  • ipython3 中定義一個元組,例如:info = ()
  • 輸入info. 按下TAB 鍵,ipython 會提示元組能夠使用的函數(shù)如下:
info.count info.index

有關 元組 的 常用操作 可以參照上圖練習

2.3 循環(huán)遍歷

  • 取值就是從元組中獲取存儲在指定位置的數(shù)據(jù)
  • 遍歷就是從頭到尾依次元組中獲取數(shù)據(jù)
# for 循環(huán)內(nèi)部使用的變量 in 元組
for item in info:

循環(huán)內(nèi)部針對元組元素進行操作
print(item)
  • Python 中,可以使用for 循環(huán)遍歷所有非數(shù)字型類型的變量:列表、元組、字典以及字符串
  • 提示:在實際開發(fā)中,除非能夠確認元組中的數(shù)據(jù)類型,否則針對元組的循環(huán)遍歷需求并不是很多

2.4 應用場景

  • 盡管可以使用for in 遍歷元組
  • 但是在開發(fā)中,更多的應用場景是:
    • 函數(shù)的 參數(shù) 和 返回值,一個函數(shù)可以接收任意多個參數(shù),或者一次返回多個數(shù)據(jù)
  • 有關函數(shù)的參數(shù) 和 返回值,在后續(xù)函數(shù)高級給大家介紹
    • 格式字符串,格式化字符串后面的() 本質(zhì)上就是一個元組
    • 讓列表不可以被修改,以保護數(shù)據(jù)安全
info = ("zhangsan", 18)
print("%s 的年齡是 %d" % info)

元組和列表之間的轉換:

  • 使用list 函數(shù)可以把元組轉換成列表
list(元組)
  • 使用tuple 函數(shù)可以把列表轉換成元組
tuple(列表)

3. 字典

3.1 字典的定義

  • dictionary(字典) 是除列表以外Python 之中最靈活的數(shù)據(jù)類型
  • 字典同樣可以用來存儲多個數(shù)據(jù)
    • 通常用于存儲描述一個 物體 的相關信息
  • 和列表的區(qū)別
    • 列表有序的對象集合
    • 字典無序的對象集合
  • 字典用{} 定義
  • 字典使用鍵值對存儲數(shù)據(jù),鍵值對之間使用, 分隔
    • key 是索引
    • value 是數(shù)據(jù)
    • 之間使用: 分隔
    • 鍵必須是唯一的
    • 可以取任何數(shù)據(jù)類型,但只能使用字符串、數(shù)字元組
xiaoming = {"name": "小明",
"age": 18,
"gender": True,
"height": 1.75}

3.2 字典常用操作

  • ipython3 中定義一個字典,例如:xiaoming = {}
  • 輸入xiaoming. 按下TAB 鍵,ipython 會提示字典能夠使用的函數(shù)如下:
In [1]: xiaoming.
xiaoming.clear xiaoming.items xiaoming.setdefault
xiaoming.copy xiaoming.keys xiaoming.update
xiaoming.fromkeys xiaoming.pop xiaoming.values
xiaoming.get xiaoming.popitem

有關 字典 的 常用操作 可以參照上圖練習

3.3 循環(huán)遍歷

  • 遍歷就是依次字典中獲取所有鍵值對
# for 循環(huán)內(nèi)部使用的 `key 的變量` in 字典
for k in xiaoming:

print("%s: %s" % (k, xiaoming[k]))

提示:在實際開發(fā)中,由于字典中每一個鍵值對保存數(shù)據(jù)的類型是不同的,所以針對字典的循環(huán)遍歷需求并不是很多

3.4 應用場景

  • 盡管可以使用for in 遍歷字典
  • 但是在開發(fā)中,更多的應用場景是:
    • 使用多個鍵值對,存儲描述一個 物體 的相關信息—— 描述更復雜的數(shù)據(jù)信息
    • 多個字典放在一個列表中,再進行遍歷,在循環(huán)體內(nèi)部針對每一個字典進行相同的處理
card_list = [{"name": "張三",
"qq": "12345",
"phone": "110"},
{"name": "李四",
"qq": "54321",
"phone": "10086"}
]

4. 字符串

4.1 字符串的定義

  • 字符串就是一串字符,是編程語言中表示文本的數(shù)據(jù)類型
  • 在 Python 中可以使用一對雙引號" 或者一對單引號' 定義一個字符串
    • 雖然可以使用\" 或者\' 做字符串的轉義,但是在實際開發(fā)中:
  • 如果字符串內(nèi)部需要使用",可以使用' 定義字符串
  • 如果字符串內(nèi)部需要使用',可以使用" 定義字符串
  • 可以使用索引獲取一個字符串中指定位置的字符,索引計數(shù)從0開始
  • 也可以使用for循環(huán)遍歷字符串中每一個字符

大多數(shù)編程語言都是用 " 來定義字符串

string = "Hello Python"

for c in string:
print(c)

4.2 字符串的常用操作

  • ipython3 中定義一個字符串,例如:hello_str = ""
  • 輸入hello_str. 按下TAB 鍵,ipython 會提示字符串能夠使用的方法如下:
In [1]: hello_str.
hello_str.capitalize hello_str.isidentifier hello_str.rindex
hello_str.casefold hello_str.islower hello_str.rjust
hello_str.center hello_str.isnumeric hello_str.rpartition
hello_str.count hello_str.isprintable hello_str.rsplit
hello_str.encode hello_str.isspace hello_str.rstrip
hello_str.endswith hello_str.istitle hello_str.split
hello_str.expandtabs hello_str.isupper hello_str.splitlines
hello_str.find hello_str.join hello_str.startswith
hello_str.format hello_str.ljust hello_str.strip
hello_str.format_map hello_str.lower hello_str.swapcase
hello_str.index hello_str.lstrip hello_str.title
hello_str.isalnum hello_str.maketrans hello_str.translate
hello_str.isalpha hello_str.partition hello_str.upper
hello_str.isdecimal hello_str.replace hello_str.zfill
hello_str.isdigit hello_str.rfind

提示:正是因為 python 內(nèi)置提供的方法足夠多,才使得在開發(fā)時,能夠針對字符串進行更加靈活的操作!應對更多的開發(fā)需求!

1) 判斷類型

方法

說明

string.isspace()

如果 string 中只包含空格,則返回 True

string.isalnum()

如果 string 至少有一個字符并且所有字符都是字母或數(shù)字則返回 True

string.isalpha()

如果 string 至少有一個字符并且所有字符都是字母則返回 True

string.isdecimal()

如果 string 只包含數(shù)字則返回 True,全角數(shù)字

string.isdigit()

如果 string 只包含數(shù)字則返回 True,全角數(shù)字、、\u00b2

string.isnumeric()

如果 string 只包含數(shù)字則返回 True,全角數(shù)字,漢字數(shù)字

string.istitle()

如果 string 是標題化的(每個單詞的首字母大寫)則返回 True

string.islower()

如果 string 中包含至少一個區(qū)分大小寫的字符,并且所有這些(區(qū)分大小寫的)字符都是小寫,則返回 True

string.isupper()

如果 string 中包含至少一個區(qū)分大小寫的字符,并且所有這些(區(qū)分大小寫的)字符都是大寫,則返回 True

2) 查找和替換

方法

說明

string.startswith(str)

檢查字符串是否是以 str 開頭,是則返回 True

string.endswith(str)

檢查字符串是否是以 str 結束,是則返回 True

string.find(str, start=0, end=len(string))

檢測 str 是否包含在 string 中,如果 start 和 end 指定范圍,則檢查是否包含在指定范圍內(nèi),如果是返回開始的索引值,否則返回 -1

string.rfind(str, start=0, end=len(string))

類似于 find(),不過是從右邊開始查找

string.index(str, start=0, end=len(string))

跟 find() 方法類似,不過如果 str 不在 string 會報錯

string.rindex(str, start=0, end=len(string))

類似于 index(),不過是從右邊開始

string.replace(old_str, new_str, num=string.count(old))

把 string 中的 old_str 替換成 new_str,如果 num 指定,則替換不超過 num 次

3) 大小寫轉換

方法

說明

string.capitalize()

把字符串的第一個字符大寫

string.title()

把字符串的每個單詞首字母大寫

string.lower()

轉換 string 中所有大寫字符為小寫

string.upper()

轉換 string 中的小寫字母為大寫

string.swapcase()

翻轉 string 中的大小寫

4) 文本對齊

方法

說明

string.ljust(width)

返回一個原字符串左對齊,并使用空格填充至長度 width 的新字符串

string.rjust(width)

返回一個原字符串右對齊,并使用空格填充至長度 width 的新字符串

string.center(width)

返回一個原字符串居中,并使用空格填充至長度 width 的新字符串

5) 去除空白字符

方法

說明

string.lstrip()

截掉 string 左邊(開始)的空白字符

string.rstrip()

截掉 string 右邊(末尾)的空白字符

string.strip()

截掉 string 左右兩邊的空白字符

6) 拆分和連接

方法

說明

string.partition(str)

把字符串 string 分成一個 3 元素的元組 (str前面, str, str后面)

string.rpartition(str)

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

string.split(str=“”, num)

以 str 為分隔符拆分 string,如果 num 有指定值,則僅分隔 num + 1 個子字符串,str 默認包含 ‘\r’, ‘\t’, ‘\n’ 和空格

string.splitlines()

按照行(‘\r’, ‘\n’, ‘\r\n’)分隔,返回一個包含各行作為元素的列表

string.join(seq)

以 string 作為分隔符,將 seq 中所有的元素(的字符串表示)合并為一個新的字符串

4.3 字符串的切片

  • 切片方法適用于字符串、列表、元組
    • 切片使用索引值來限定范圍,從一個大的字符串切出小的字符串
    • 列表元組都是有序的集合,都能夠通過索引值獲取到對應的數(shù)據(jù)
    • 字典是一個無序的集合,是使用鍵值對保存數(shù)據(jù)

字符串[開始索引:結束索引:步長]

注意

  • 指定的區(qū)間屬于左閉右開[開始索引, 結束索引) =>開始索引 >= 范圍 < 結束索引
    • 起始 位開始,到 結束位的前一位結束(不包含結束位本身)
  • 從頭開始,開始索引數(shù)字可以省略,冒號不能省略
  • 到末尾結束,結束索引數(shù)字可以省略,冒號不能省略
  • 步長默認為1,如果連續(xù)切片,數(shù)字和冒號都可以省略

索引的順序和倒序:

  • 在 Python 中不僅支持順序索引,同時還支持倒序索引
  • 所謂倒序索引就是從右向左計算索引
    • 最右邊的索引值是-1,依次遞減

演練需求:

  • 截取從 2 ~ 5 位置 的字符串
  • 截取從 2 ~末尾 的字符串
  • 截取從開始 ~ 5 位置 的字符串
  • 截取完整的字符串
  • 從開始位置,每隔一個字符截取字符串
  • 從索引 1 開始,每隔一個取一個
  • 截取從 2 ~末尾 - 1 的字符串
  • 截取字符串末尾兩個字符
  • 字符串的逆序(面試題)

答案

num_str = "0123456789"

# 1. 截取從 2 ~ 5 位置 的字符串
print(num_str[2:6])

# 2. 截取從 2 ~ `末尾` 的字符串
print(num_str[2:])

# 3. 截取從 `開始` ~ 5 位置 的字符串
print(num_str[:6])

# 4. 截取完整的字符串
print(num_str[:])

# 5. 從開始位置,每隔一個字符截取字符串
print(num_str[::2])

# 6. 從索引 1 開始,每隔一個取一個
print(num_str[1::2])

# 倒序切片
# -1 表示倒數(shù)第一個字符
print(num_str[-1])

# 7. 截取從 2 ~ `末尾 - 1` 的字符串
print(num_str[2:-1])

# 8. 截取字符串末尾兩個字符
print(num_str[-2:])

# 9. 字符串的逆序(面試題)
print(num_str[::-1])

4.4 字符串的格式化輸出

方法一:使用占位符

字符串格式化輸出 是按照一種既定格式給字符串填空的方式,以便我們更加方便地寫入字符串。

例如:

def print_intro(name, age, city):
intro = '我叫%s,今年 %d 歲,來自%s。' % (name, age, city)
print(intro)
print_intro('小貝', 18, '南京')
# 輸出:我叫小貝,今年 18 歲,來自南京。

字符串格式化輸出的語法規(guī)則:

% 運算符左邊是要格式化的字符串,右邊是一個元組。如果只有一個占位符,可以將元組里的元素拿出來,如:‘我叫%s’ % ‘小貝’。我們通過 %s、%d 這樣的占位符在字符串中“占位”,Python 會將 % 右邊的內(nèi)容會按順序替換掉對應的占位符,一一填空。每個占位符都有特定的含義,我們來看一下常見的占位符:

提示:如果你不太確定應該用什么占位符,%s 是萬能的,它會把任何數(shù)據(jù)類型轉換為字符串。

方法二:format()

例如:

'我叫{},今年 {} 歲,來自{}'.format('小貝', 18, '南京')
# 我叫小貝,今年 18 歲,來自南京

從上面的例子可以看到,format() 方法使用 {} 作為占位符,然后按照參數(shù)順序替換對應的占位符。

我們還可以給占位符編號:

'我叫{0},今年 {1} 歲,來自{2}'.format('小貝', 18, '南京')
# 我叫小貝,今年 18 歲,來自南京

# 調(diào)整編號順序
'我叫{2},今年 {1} 歲,來自{0}'.format('南京', 18, '小貝')
# 我叫小貝,今年 18 歲,來自南京

# 重復編號
'我叫{0},{0}今年 {1} 歲,來自{2}'.format('小貝', 18, '南京')
# 我叫小貝,小貝今年 18 歲,來自南京

我們還可以給占位符命名:

'我叫{name},今年 {age} 歲,來自{city}'.format(name = '小貝', age = 18, city = '南京')
# 我叫小貝,今年 18 歲,來自南京

# 命名后參數(shù)順序不再重要
'我叫{name},今年 {age} 歲,來自{city}'.format(age = 18, city = '南京', name = '小貝')
# 我叫小貝,今年 18 歲,來自南京

5. 公共方法

5.1 Python 內(nèi)置函數(shù)

Python 包含了以下內(nèi)置函數(shù):

函數(shù)

描述

備注

len(item)

計算容器中元素個數(shù)

 

del(item)

刪除變量

del 有兩種方式

max(item)

返回容器中元素最大值

如果是字典,只針對 key 比較

min(item)

返回容器中元素最小值

如果是字典,只針對 key 比較

cmp(item1, item2)

比較兩個值,-1 小于/0 相等/1 大于

Python 3.x 取消了 cmp 函數(shù)

注意:字符串比較符合以下規(guī)則: “0” < “A” < “a”

5.2 切片

| 描述 | Python 表達式 | 結果 | 支持的數(shù)據(jù)類型 |
| :—: | — | — | — | — |
| 切片 | “0123456789”[::-2] | “97531” | 字符串、列表、元組 |

  • 切片使用索引值來限定范圍,從一個大的字符串切出小的字符串
  • 列表元組都是有序的集合,都能夠通過索引值獲取到對應的數(shù)據(jù)
  • 字典是一個無序的集合,是使用鍵值對保存數(shù)據(jù)

5.3 運算符

運算符

Python 表達式

結果

描述

支持的數(shù)據(jù)類型

+

[1, 2] + [3, 4]

[1, 2, 3, 4]

合并

字符串、列表、元組

*

[“Hi!”] * 4

[‘Hi!’, ‘Hi!’, ‘Hi!’, ‘Hi!’]

重復

字符串、列表、元組

in

3 in (1, 2, 3)

True

元素是否存在

字符串、列表、元組、字典

not in

4 not in (1, 2, 3)

True

元素是否不存在

字符串、列表、元組、字典

> >= == < <=

(1, 2, 3) < (2, 2, 3)

True

元素比較

字符串、列表、元組

注意:

  • in 在對字典操作時,判斷的是字典的鍵
  • innot in 被稱為成員運算符

成員運算符:

成員運算符用于 測試 序列中是否包含指定的 成員

運算符

描述

實例

in

如果在指定的序列中找到值返回 True,否則返回 False

3 in (1, 2, 3) 返回 True

not in

如果在指定的序列中沒有找到值返回 True,否則返回 False

3 not in (1, 2, 3) 返回 False

注意:在對 字典 操作時,判斷的是 字典的鍵

5.4 完整的 for 循環(huán)語法

Python 中完整的for 循環(huán)語法如下:

for 變量 in 集合:

循環(huán)體代碼
else:
沒有通過 break

應用場景:

  • 迭代遍歷嵌套的數(shù)據(jù)類型時,例如一個列表包含了多個字典
  • 需求:要判斷 某一個字典中 是否存在 指定的 值
    • 如果存在,提示并且退出循環(huán)
    • 如果不存在,在循環(huán)整體結束后,希望得到一個統(tǒng)一的提示
students = [
    {"name": "阿土",
     "age": 20,
     "gender": True,
     "height": 1.7,
     "weight": 75.0},
    {"name": "小美",
     "age": 19,
     "gender": False,
     "height": 1.6,
     "weight": 45.0},
]
find_name = "阿土"
for stu_dict in students:
    print(stu_dict)
    # 判斷當前遍歷的字典中姓名是否為find_name
    if stu_dict["name"] == find_name:
        print("找到了")
        # 如果已經(jīng)找到,直接退出循環(huán),就不需要再對后續(xù)的數(shù)據(jù)進行比較
        break
else:
    print("沒有找到")
print("循環(huán)結束")

到此這篇關于Python常用數(shù)據(jù)結構和公共方法技巧總結的文章就介紹到這了,更多相關Python數(shù)據(jù)結構內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論

潼关县| 江津市| 嘉义市| 沿河| 蒙山县| 青川县| 新乐市| 裕民县| 潞城市| 北辰区| 辛集市| 都兰县| 丹棱县| 石台县| 德惠市| 江孜县| 华安县| 彝良县| 云安县| 陵水| 临高县| 荔浦县| 大城县| 高台县| 湖南省| 荃湾区| 治县。| 榕江县| 辽阳县| 芜湖县| 茂名市| 赤城县| 新民市| 桐庐县| 建阳市| 栾川县| 筠连县| 庆阳市| 鲁甸县| 普定县| 梓潼县|