Python基礎知識歸納總結

目錄

一、線性表

總結

二、棧

三、隊列

四、哈希表

五、字符串

六、正則表達式

綜合示例


一、線性表

線性表(通常用列表表示)是一種按線性順序存儲元素的數據結構。

  1. 插入元素?(append,?insert)

  2. 刪除元素?(remove,?pop)

  3. 查找元素?(index)

  4. 更新元素?(直接索引訪問)

  5. 遍歷元素?(for循環)

  6. 檢查元素存在?(in運算符)

  7. 獲取長度?(len)

插入元素

  • append: 在列表末尾添加一個元素。

    1

    lst = [1, 2, 3]

    2

    lst.append(4)

    3

    print(lst) # 輸出: [1, 2, 3, 4]

    返回值:None,操作是原地修改列表。

  • insert: 在指定位置插入一個元素。

    1

    lst = [1, 2, 3]

    2

    lst.insert(1, 9)

    3

    print(lst) # 輸出: [1, 9, 2, 3]

    返回值:None,操作是原地修改列表。

刪除元素

  • remove: 刪除第一個匹配的元素。

    1

    lst = [1, 2, 3, 2]

    2

    lst.remove(2)

    3

    print(lst) # 輸出: [1, 3, 2]

    返回值:None,操作是原地修改列表。如果元素不存在,會引發ValueError

  • pop: 刪除并返回指定位置的元素,默認刪除最后一個元素。

    1

    lst = [1, 2, 3]

    2

    removed_element = lst.pop()

    3

    print(lst) # 輸出: [1, 2]

    4

    print(removed_element) # 輸出: 3

    返回值:被刪除的元素。如果列表為空,調用pop會引發IndexError

查找元素

  • index: 返回第一個匹配元素的索引。

    1

    lst = [1, 2, 3]

    2

    idx = lst.index(2)

    3

    print(idx) # 輸出: 1

    返回值:匹配元素的索引。如果元素不存在,會引發ValueError

更新元素

  • 直接索引訪問:通過索引更新元素。

    1

    lst = [1, 2, 3]

    2

    lst[1] = 9

    3

    print(lst) # 輸出: [1, 9, 3]

    返回值None,操作是原地修改列表。

遍歷元素

  • 使用for循環遍歷列表中的元素。

    1

    lst = [1, 2, 3]

    2

    for elem in lst:

    3

    print(elem)

    返回值:None,只用于遍歷和訪問元素。

檢查元素存在

  • 使用in運算符檢查元素是否存在于列表中。

    1

    lst = [1, 2, 3]

    2

    is_in_list = 2 in lst

    3

    print(is_in_list) # 輸出: True

    返回值:布爾值,表示元素是否存在。

獲取長度

  • 使用len函數獲取列表長度。

    1

    lst = [1, 2, 3]

    2

    length = len(lst)

    3

    print(length) # 輸出: 3

    返回值:整數,表示列表的長度。

總結

以下是一個包含所有操作的示例代碼:

1

lst = [1, 2, 3]

2

3

# 插入元素

4

lst.append(4) # 返回值: None

5

lst.insert(1, 9) # 返回值: None

6

print(lst) # 輸出: [1, 9, 2, 3, 4]

7

8

# 刪除元素

9

lst.remove(2) # 返回值: None

10

print(lst) # 輸出: [1, 9, 3, 4]

11

removed_element = lst.pop() # 返回值: 4

12

print(lst) # 輸出: [1, 9, 3]

13

print(removed_element) # 輸出: 4

14

15

# 查找元素

16

idx = lst.index(9) # 返回值: 1

17

print(idx) # 輸出: 1

18

19

# 更新元素

20

lst[1] = 7 # 返回值: None

21

print(lst) # 輸出: [1, 7, 3]

22

23

# 遍歷元素

24

for elem in lst:

25

print(elem)

26

27

# 檢查元素存在

28

is_in_list = 2 in lst # 返回值: False

29

print(is_in_list) # 輸出: False

30

31

# 獲取長度

32

length = len(lst) # 返回值: 3

33

print(length) # 輸出: 3

好的,下面是棧、隊列和哈希表的基礎操作、其返回值及如何返回的詳細介紹。

二、棧

棧(Stack)是一種后進先出(LIFO,Last In First Out)的數據結構。

基礎操作及返回值

  1. 壓棧(push
  2. 出棧(pop
  3. 查看棧頂元素(peek
  4. 檢查棧是否為空(is_empty

棧的操作示例(使用Python列表模擬):

1

# 初始化棧

2

stack = []

3

4

# 壓棧

5

stack.append(1) # 返回值: None

6

stack.append(2) # 返回值: None

7

stack.append(3) # 返回值: None

8

print(stack) # 輸出: [1, 2, 3]

9

10

# 出棧

11

top_element = stack.pop() # 返回值: 3

12

print(top_element) # 輸出: 3

13

print(stack) # 輸出: [1, 2]

14

15

# 查看棧頂元素

16

top_element = stack[-1] # 返回值: 2

17

print(top_element) # 輸出: 2

18

19

# 檢查棧是否為空

20

is_empty = len(stack) == 0 # 返回值: False

21

print(is_empty) # 輸出: False

三、隊列

隊列(Queue)是一種先進先出(FIFO,First In First Out)的數據結構。

基礎操作及返回值

  1. 入隊(enqueue
  2. 出隊(dequeue
  3. 查看隊頭元素(peek
  4. 檢查隊列是否為空(is_empty

隊列的操作示例(使用Python的collections.deque):

1

from collections import deque

2

3

# 初始化隊列

4

queue = deque()

5

6

# 入隊

7

queue.append(1) # 返回值: None

8

queue.append(2) # 返回值: None

9

queue.append(3) # 返回值: None

10

print(queue) # 輸出: deque([1, 2, 3])

11

12

# 出隊

13

front_element = queue.popleft() # 返回值: 1

14

print(front_element) # 輸出: 1

15

print(queue) # 輸出: deque([2, 3])

16

17

# 查看隊頭元素

18

front_element = queue[0] # 返回值: 2

19

print(front_element) # 輸出: 2

20

21

# 檢查隊列是否為空

22

is_empty = len(queue) == 0 # 返回值: False

23

print(is_empty) # 輸出: False

四、哈希表

哈希表(Hash Table)是一種通過鍵(Key)直接訪問值(Value)的數據結構。在Python中,哈希表由dict(字典)來實現。

基礎操作及返回值

  1. 插入/更新元素(setitem
  2. 刪除元素(delitem
  3. 查找元素(getitem
  4. 檢查鍵是否存在(contains
  5. 遍歷元素(items

哈希表的操作示例:

1

# 初始化哈希表

2

hash_table = {

3

"apple": 3,

4

"banana": 5,

5

"cherry": 7

6

}

7

8

# 插入/更新元素

9

hash_table["date"] = 9 # 返回值: None

10

hash_table["banana"] = 6 # 返回值: None

11

print(hash_table) # 輸出: {'apple': 3, 'banana': 6, 'cherry': 7, 'date': 9}

12

13

# 刪除元素

14

del hash_table["cherry"] # 返回值: None

15

print(hash_table) # 輸出: {'apple': 3, 'banana': 6, 'date': 9}

16

17

# 查找元素

18

value = hash_table.get("apple") # 返回值: 3

19

print(value) # 輸出: 3

20

21

# 檢查鍵是否存在

22

key_exists = "banana" in hash_table # 返回值: True

23

print(key_exists) # 輸出: True

24

25

# 遍歷元素

26

for key, value in hash_table.items():

27

print(f"Key: {key}, Value: {value}")

28

29

# 獲取所有鍵

30

keys = hash_table.keys() # 返回值: dict_keys(['apple', 'banana', 'date'])

31

print(keys) # 輸出: dict_keys(['apple', 'banana', 'date'])

32

33

# 獲取所有值

34

values = hash_table.values() # 返回值: dict_values([3, 6, 9])

35

print(values) # 輸出: dict_values([3, 6, 9])

五、字符串

拼接

  • 使用?+?運算符或?join?方法。

1

# 使用 + 運算符

2

str1 = "Hello"

3

str2 = "World"

4

result = str1 + " " + str2

5

print(result) # 輸出: Hello World

6

7

# 使用 join 方法

8

words = ["Hello", "World"]

9

result = " ".join(words)

10

print(result) # 輸出: Hello World

查找

  • 使用?find?或?index?方法。

1

text = "Hello, World!"

2

position = text.find("World")

3

print(position) # 輸出: 7

4

5

position = text.index("World")

6

print(position) # 輸出: 7

替換

  • 使用?replace?方法。

1

text = "Hello, World!"

2

new_text = text.replace("World", "there")

3

print(new_text) # 輸出: Hello, there!

分割

  • 使用?split?方法。

1

text = "apple,banana,cherry"

2

fruits = text.split(",")

3

print(fruits) # 輸出: ['apple', 'banana', 'cherry']

去除空白

  • 使用?strip,?lstrip,?rstrip?方法。

1

text = " Hello, World! "

2

stripped_text = text.strip()

3

print(stripped_text) # 輸出: Hello, World!

大小寫轉換

  • 使用?upper,?lower,?capitalize,?title,?swapcase?方法。

1

text = "hello, world!"

2

print(text.upper()) # 輸出: HELLO, WORLD!

3

print(text.lower()) # 輸出: hello, world!

4

print(text.capitalize()) # 輸出: Hello, world!

5

print(text.title()) # 輸出: Hello, World!

6

print(text.swapcase()) # 輸出: HELLO, WORLD!

檢查前綴/后綴

  • 使用?startswith,?endswith?方法。

1

text = "Hello, World!"

2

print(text.startswith("Hello")) # 輸出: True

3

print(text.endswith("World!")) # 輸出: True

格式化

  • 使用?format?方法或 f-string(Python 3.6+)。

1

# 使用 format 方法

2

name = "Alice"

3

age = 30

4

text = "My name is {} and I am {} years old.".format(name, age)

5

print(text) # 輸出: My name is Alice and I am 30 years old.

6

7

# 使用 f-string

8

text = f"My name is {name} and I am {age} years old."

9

print(text) # 輸出: My name is Alice and I am 30 years old.

六、正則表達式

正則表達式用于模式匹配和文本處理。Python的?re?模塊提供了正則表達式支持。

常用正則表達式操作

  1. 匹配(match,?search
  2. 查找所有(findall
  3. 替換(sub
  4. 分割(split
  5. 編譯正則表達式(compile

匹配

  • 使用?match?和?search?方法。

1

import re

2

3

pattern = r"\d+"

4

5

# match 從字符串開始位置匹配

6

result = re.match(pattern, "123abc")

7

if result:

8

print(result.group()) # 輸出: 123

9

10

# search 在整個字符串中搜索

11

result = re.search(pattern, "abc123")

12

if result:

13

print(result.group()) # 輸出: 123

查找所有

  • 使用?findall?方法。

1

text = "abc123xyz456"

2

pattern = r"\d+"

3

matches = re.findall(pattern, text)

4

print(matches) # 輸出: ['123', '456']

替換

  • 使用?sub?方法。

1

text = "abc123xyz456"

2

pattern = r"\d+"

3

new_text = re.sub(pattern, "#", text)

4

print(new_text) # 輸出: abc#xyz#

分割

  • 使用?split?方法。

1

text = "one1two2three3four"

2

pattern = r"\d"

3

parts = re.split(pattern, text)

4

print(parts) # 輸出: ['one', 'two', 'three', 'four']

編譯正則表達式

  • 使用?compile?方法。

1

pattern = re.compile(r"\d+")

2

text = "abc123xyz456"

3

matches = pattern.findall(text)

4

print(matches) # 輸出: ['123', '456']

綜合示例

1

import re

2

3

# 字符串操作

4

text = " Hello, World! "

5

text = text.strip().replace("World", "there").upper()

6

print(text) # 輸出: HELLO, THERE!

7

8

# 正則表達式操作

9

pattern = re.compile(r"\d+")

10

text = "abc123xyz456"

11

matches = pattern.findall(text)

12

print(matches) # 輸出: ['123', '456']

13

14

# 替換和分割

15

new_text = re.sub(r"\d+", "#", text)

16

print(new_text) # 輸出: abc#xyz#

17

parts = re.split(r"\d", text)

18

print(parts) # 輸出: ['abc', '', '', 'xyz', '', '', '']

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/14395.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/14395.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/14395.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

FreeRTOS學習——FreeRTOS隊列(下)之隊列創建

本篇文章記錄我學習FreeRTOS隊列創建的知識。主要分享隊列創建需要使用的初始化函數、隊列復位函數。 需要進一步了解FreeRTOS隊列的相關知識,讀者可以參考以下文章: FreeRTOS學習——FreeRTOS隊列(上)_freertos 單元素隊列-CSDN博…

Spring、SpringMVC、SpringBoot 三者之間是什么關系

Spring、SpringMVC、SpringBoot 是三個獨立的框架,它們之間的關系是: 1. Spring是一個Java的輕量級應用框架,提供了基于IoC和AOP的支持,用于構建企業級應用。Spring有多 個模塊,包括 Spring Core、Spring Context、Spring JDBC、…

高質量油封選擇的重要性

在現代工業和機械系統中,油封的作用至關重要。它們不僅防止潤滑劑泄漏,還阻止污染物進入系統,從而保障設備的正常運行。選擇高質量的油封對于保證設備性能、延長使用壽命和降低維護成本至關重要。本文將從多個角度探討選擇高質量油封的重要性…

【hackmyvm】Slowman靶機

文章目錄 主機探測端口探測FTP匿名登錄 目錄探測hydra爆破mysql爆破zip------fcrackzip爆破密碼-----john提權 主機探測 ┌──(root?kali)-[/home/kali] └─# fping -ag 192.168.9.1/24 2>/dev/null 192.168.9.221 主機192.168.9.224 靶機端口探測 ┌──(roo…

送變電乙級資質申請攻略:關鍵步驟與注意事項

關鍵步驟: 工商注冊與資本核實: 確保企業已正式注冊,且注冊資金不少于100萬元人民幣,同時準備企業法人營業執照等相關證明文件。 人員配置與注冊: 根據資質要求,配置齊全合理的專業技術人員,包括…

【教程】Linux 安裝 kkFileView 文檔在線預覽項目 及優化

【教程】Linux 安裝 kkFileView 文檔在線預覽項目 官網 kkFileView - 在線文件預覽 (keking.cn) 安裝包 可以直接下載成品 也可以下載source 源碼 自己編譯 kkFileView 發行版 - Gitee.com 打開IDEA 然后先clear 再install 然后在 file-online-preview\server\target 目錄…

Nginx R31 doc-09-Serving Static Content 靜態內容

提供靜態內容 配置 NGINX 和 NGINX Plus 以提供靜態內容,使用類型特定的根目錄,檢查文件存在性,并進行性能優化。 本節介紹如何配置 NGINX 和 NGINX Plus 以提供靜態內容,如何定義搜索請求文件的路徑,如何設置索引文…

WordPress插件Disable WP REST API,可根據是否登錄來禁用REST API

前面跟大家分享了代碼版禁用WordPress REST API的方法(詳見『WordPress4.7以上版本如何禁用JSON REST API?』),不過有些站長不太敢折騰自己的網站代碼,那么建議試試這款Disable WP REST API,它可以&#xf…

小結5:朗讀練習第二段

五、朗讀練習2 2024-5-6始,5-14終,5-15寫。 我漸漸體會到一些朗讀的樂趣。但我還要考研,要寫作業、期末考試。如果是在大一該多好。我可以就這樣一天一天的寫下去,慢慢地有一些自己的作品,還能錄視頻發到b站上。 上一篇…

通過修改物理內存實現跨進程內存讀寫

習一下利用修改物理內存來跨進程內存讀寫 系統:win10 21h1 x64 編譯環境: vs2022 詳情見附錄 基礎 虛擬地址轉物理地址 虛擬地址也稱線性地址,一個線性地址進程的DirBase地址可以轉換成物理地址。先來看線性地址的含義 在x64體系中只實現了48位的virtu…

刀片式服務器的主要組件有哪些?

刀片式服務器是專門為特殊應用行業跟高密度計算環境設計的,是高可用高密度低成本的服務器平臺,刀片服務器這個名稱主要是根據產品的形狀,刀片式服務器的組成單元外形扁平,就像刀片一樣,整體設計的比較緊湊,…

C#和C++有什么區別?

C#和C都是廣泛使用的編程語言,但它們在設計理念、應用場景和語法上有許多顯著的區別。以下是一些關鍵區別的詳細介紹: 1. 設計理念和目的 C: 設計目的:C是一種面向系統編程和應用程序開發的語言,具有高效性和靈活性…

電工杯b題

雖然這次休息不打,但是看了一下,我比較傾向于機器學習灌水(doge

刷題之從前序遍歷與中序遍歷序列構造二叉樹(leetcode)

從前序遍歷與中序遍歷序列構造二叉樹 前序遍歷&#xff1a;中左右 中序遍歷&#xff1a;左中右 前序遍歷的第一個數必定為根節點&#xff0c;再到中序遍歷中找到該數&#xff0c;數的左邊是左子樹&#xff0c;右邊是右子樹&#xff0c;進行遞歸即可。 #include<vector>…

Juniper查看并調整策略順序

1.查看安全策略 >show security policies 順序就是按照顯示出來的順序&#xff0c;與Index無關&#xff0c;從上到下匹配 2. 調整防火墻策略 #insert security policies from-zone CAMERAS to-zone INTERNET policy CAMERAS-to-NTP before policy CAMERAS-to-INTERNET …

操作系統3_作業與處理機調度

操作系統3_作業與處理機調度 文章目錄 操作系統3_作業與處理機調度1. 作業的概念與組成2. 作業的建立及狀態3. 處理機調度相關概念3.1 調度級別3.2 調度隊列模型3.3 選擇準則4. 作業調度與進程調度5. 典型處理機調度算法5.1 先來先服務算法FCFS5.2 短作業優先算法SJF5.3 優先級…

【力扣一輪】字符串異位 數組并集

先驗知識記錄&#xff1a; 遇到哈希問題&#xff0c;想到三種數據結構&#xff1a; ①數組&#xff1a;適用于哈希值比較小&#xff0c;范圍較小&#xff0c; ②set&#xff1a;適用于哈希值較大。 ③map&#xff1a;如果需要用到鍵值對&#xff0c;則用之。 242.有效的字母…

撥云見日,ATFX七場研討會揭秘投資先機

財經先機&#xff0c;一手掌握。近期&#xff0c;隨著國際金價持續走高&#xff0c;避險情緒高漲&#xff0c;由此激發新一輪投資熱潮。作為業界領先的金融創新品牌&#xff0c;ATFX深受投資者認可和信賴&#xff0c;為助力廣大投資者了解市場運行規律&#xff0c;捕捉財經脈絡…

C++通過讀取二進制流的方式來解析PE(靜態文件讀取法)

步驟解讀 先選擇文件讀取文件二進制流從二進制流讀取DOS頭&#xff08;DOS_HEADER&#xff09;&#xff0c;長度64字節讀取DOS殼&#xff08;DOS_STUB&#xff09;&#xff0c;DOS頭開始&#xff0c;長度至到dosHeader->e_lfanew偏移量讀取PE標識&#xff08;Signature&…

520節日特別篇:構建浪漫互動網站實戰技巧

520節日特別篇&#xff1a;構建浪漫互動網站實戰技巧 一、非零分積分資源概覽二、基礎概念與作用說明HTML5 Canvas & SVGCSS3 動畫與過渡JavaScript 動態交互 三、實戰代碼示例&#xff1a;打造浪漫愛心雨HTML 結構CSS 樣式JavaScript 邏輯 四、實際開發應用思路1. 個性化祝…