Python基礎數據結構詳解:字符串、列表、元組和字典的常用方法

目錄

一、引言:為什么學習這些數據結構?

二、字符串(String)的常用方法

1. 基本操作

2. 查找索引

3. 大小寫轉換

4. 位置調整

5. 開頭和結尾檢查

6. 分割和連接

7. 刪除空白字符

8. 類型判定

9. 替換內容

字符串小結

三、列表(List)的常用方法

1. 基本操作

2. 遍歷列表

3. 常用方法

列表小結

四、元組(Tuple)的常用方法

1. 定義和特性

2. 常用方法

3. 優點

元組小結

五、字典(Dictionary)的常用方法

1. 定義和特性

2. 遍歷字典

3. 常用方法

字典小結

六、總結與比較

實際應用示例

七、結語


Python作為一門易學易用的編程語言,其內置的數據結構是學習和開發的基礎。字符串、列表、元組和字典是Python中最常用的數據類型,掌握它們的常用方法能極大提升編程效率。本博客將用通俗易懂的語言,詳細講解這些數據結構的每個方法,包括定義、使用場景、代碼示例和注意事項。內容全面,字數超過7000字,確保你讀完就能上手實戰!


一、引言:為什么學習這些數據結構?

在Python中,數據以不同形式存儲和處理。字符串用于文本操作,列表用于有序集合,元組用于不可變數據,字典用于鍵值對映射。這些結構是Python的核心,幾乎所有程序都依賴它們。例如:

  • 字符串處理用戶輸入或文件內容。
  • 列表管理動態數據集合,如購物車商品。
  • 元組存儲固定配置,如坐標點。
  • 字典快速查詢數據,如用戶信息數據庫。
    學好這些方法,能讓你寫出更簡潔、高效的代碼。下面我們逐一深入。

二、字符串(String)的常用方法

字符串是文本數據,用單引號或雙引號定義,如 s = "Hello"。Python提供了豐富的方法操作字符串。

1. 基本操作
  • len() 獲取長度:返回字符串的字符數。

    s = "Python"
    print(len(s))  # 輸出:6
    

  • + 拼接字符串:將兩個字符串連接。

    s1 = "Hello"
    s2 = "World"
    print(s1 + " " + s2)  # 輸出:"Hello World"
    

  • * 重復字符串:將字符串重復多次。

    s = "Hi"
    print(s * 3)  # 輸出:"HiHiHi"
    

  • format() 格式化字符串:插入變量到模板中,比+更靈活。

    name = "Alice"
    age = 25
    print("My name is {}, age is {}".format(name, age))  # 輸出:"My name is Alice, age is 25"
    

2. 查找索引
  • index() 返回索引:查找子串首次出現的位置,找不到會報錯(需先判斷存在)。

    s = "apple"
    print(s.index("p"))  # 輸出:1(索引從0開始)
    # 如果找不到:s.index("z") 會報錯 ValueError
    

  • find() 返回索引:類似index,但找不到時返回-1,更安全。

    s = "apple"
    print(s.find("l"))  # 輸出:3
    print(s.find("z"))  # 輸出:-1(表示未找到)
    

3. 大小寫轉換
  • capitalize() 首字母大寫:將字符串第一個字母大寫。

    s = "python"
    print(s.capitalize())  # 輸出:"Python"
    

  • upper() 全大寫:所有字母轉為大寫。

    s = "Hello"
    print(s.upper())  # 輸出:"HELLO"
    

  • lower() 全小寫:所有字母轉為小寫。

    s = "WORLD"
    print(s.lower())  # 輸出:"world"
    

  • swapcase() 大小寫互換:大寫變小寫,小寫變大寫。

    s = "PyThOn"
    print(s.swapcase())  # 輸出:"pYtHoN"
    

  • title() 單詞首字母大寫:每個單詞的首字母大寫。

    s = "hello world"
    print(s.title())  # 輸出:"Hello World"
    

4. 位置調整
  • center(width, fillchar) 居中:字符串居中,兩側用指定字符填充。

    s = "Python"
    print(s.center(10, "_"))  # 輸出:"__Python__"(總長度10,兩側各兩個_)
    

  • ljust(width, fillchar) 居左:字符串靠左,右側填充字符。

    s = "Hello"
    print(s.ljust(8, "*"))  # 輸出:"Hello***"(總長度8,右側3個*)
    

  • zfill(width) 居右填充0:字符串靠右,左側用0填充。

    s = "42"
    print(s.zfill(5))  # 輸出:"00042"(總長度5)
    

  • rjust(width, fillchar) 居右:字符串靠右,左側填充字符。

    s = "Python"
    print(s.rjust(10, "-"))  # 輸出:"----Python"(總長度10,左側4個-)
    

5. 開頭和結尾檢查
  • startswith(prefix) 檢查開頭:判斷是否以指定子串開頭。

    s = "Hello, world!"
    print(s.startswith("Hello"))  # 輸出:True
    print(s.startswith("world"))  # 輸出:False
    

  • endswith(suffix) 檢查結尾:判斷是否以指定子串結尾。

    s = "file.txt"
    print(s.endswith(".txt"))  # 輸出:True
    

6. 分割和連接
  • split(sep) 分割字符串:按分隔符切割字符串,返回列表。

    s = "apple,banana,orange"
    print(s.split(","))  # 輸出:['apple', 'banana', 'orange']
    

  • join(iterable) 連接字符串:將列表元素用字符串連接。

    words = ["Python", "is", "fun"]
    print(" ".join(words))  # 輸出:"Python is fun"
    

7. 刪除空白字符
  • strip() 刪除兩側空白:移除字符串開頭和結尾的空格、制表符等。

    s = "  Hello World  "
    print(s.strip())  # 輸出:"Hello World"
    

  • lstrip() 刪除左側空白:僅移除開頭空白。

    s = "  Python  "
    print(s.lstrip())  # 輸出:"Python  "
    

  • rstrip() 刪除右側空白:僅移除結尾空白。

    s = "  Hello  "
    print(s.rstrip())  # 輸出:"  Hello"
    

8. 類型判定
  • isalpha() 是否全字母:檢查是否所有字符都是字母。

    s = "Python"
    print(s.isalpha())  # 輸出:True
    s = "123"
    print(s.isalpha())  # 輸出:False
    

  • isdigit() 是否全數字:檢查是否所有字符都是數字。

    s = "12345"
    print(s.isdigit())  # 輸出:True
    s = "12a"
    print(s.isdigit())  # 輸出:False
    

  • islower() 是否全小寫:檢查是否所有字母都是小寫。

    s = "python"
    print(s.islower())  # 輸出:True
    

  • isupper() 是否全大寫:檢查是否所有字母都是大寫。

    s = "HELLO"
    print(s.isupper())  # 輸出:True
    

9. 替換內容
  • replace(old, new) 替換子串:將指定舊子串替換為新子串。
    s = "I like apples"
    print(s.replace("apples", "bananas"))  # 輸出:"I like bananas"
    

字符串小結

字符串是不可變的,每次操作都生成新字符串。常用在文本處理、數據清洗中。例如,讀取文件后,用split解析內容,用strip清理空白。


三、列表(List)的常用方法

列表是可變有序集合,用方括號定義,如 lst = [1, "a", True]。支持動態增刪元素。

1. 基本操作
  • len() 獲取長度:返回列表元素個數。

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

  • 索引和切片

    • 索引:訪問單個元素,索引從0開始,負數索引從末尾計數(-1是最后一個)。
      lst = ["a", "b", "c"]
      print(lst[0])  # 輸出:"a"
      print(lst[-1])  # 輸出:"c"(最后一個)
      

    • 切片:lst[start:end:step],提取子列表。
      • start:起始索引(包含)。
      • end:結束索引(不包含)。
      • step:步長,默認1。
      lst = [0, 1, 2, 3, 4, 5]
      print(lst[1:4])  # 輸出:[1, 2, 3](索引1到3)
      print(lst[::2])  # 輸出:[0, 2, 4](步長2)
      print(lst[::-1])  # 輸出:[5, 4, 3, 2, 1, 0](逆序)
      

  • + 拼接列表:合并兩個列表。

    lst1 = [1, 2]
    lst2 = [3, 4]
    print(lst1 + lst2)  # 輸出:[1, 2, 3, 4]
    

  • * 重復列表:復制列表多次。

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

2. 遍歷列表
  • for element in lst 遍歷元素:直接訪問每個元素。

    lst = ["apple", "banana", "cherry"]
    for fruit in lst:print(fruit)  # 依次輸出:apple, banana, cherry
    

  • for i in range(len(lst)) 遍歷索引:通過索引訪問元素。

    for i in range(len(lst)):print(f"Index {i}: {lst[i]}")
    

3. 常用方法
  • count(element) 統計元素出現次數

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

  • index(element) 返回元素索引:查找元素首次出現的位置,找不到會報錯(建議先用in判斷)。

    lst = ["a", "b", "c"]
    print(lst.index("b"))  # 輸出:1
    # 如果找不到:lst.index("d") 會報錯 ValueError
    

  • 添加元素

    • append(element) 末尾添加:在列表末尾添加單個元素。
      lst = [1, 2]
      lst.append(3)
      print(lst)  # 輸出:[1, 2, 3]
      

    • insert(index, element) 指定位置插入:在索引位置插入元素。
      lst = [1, 3]
      lst.insert(1, 2)  # 在索引1處插入2
      print(lst)  # 輸出:[1, 2, 3]
      

    • extend(iterable) 擴展列表:將可迭代對象(如列表)的元素逐個添加到末尾。
      lst = [1, 2]
      lst.extend([3, 4])
      print(lst)  # 輸出:[1, 2, 3, 4]
      

  • 刪除元素

    • pop(index) 刪除并返回元素:刪除指定索引的元素(默認最后一個)。
      lst = [1, 2, 3]
      print(lst.pop())  # 輸出:3(刪除最后一個)
      print(lst)  # 輸出:[1, 2]
      print(lst.pop(0))  # 輸出:1(刪除索引0)
      

    • remove(element) 刪除指定元素:刪除首次出現的元素,元素不存在會報錯。
      lst = [1, 2, 2, 3]
      lst.remove(2)  # 刪除第一個2
      print(lst)  # 輸出:[1, 2, 3]
      

    • clear() 清空列表:移除所有元素。
      lst = [1, 2, 3]
      lst.clear()
      print(lst)  # 輸出:[]
      

  • 排序和逆序

    • sort() 排序:默認升序排序(修改原列表)。
      lst = [3, 1, 2]
      lst.sort()
      print(lst)  # 輸出:[1, 2, 3]
      

      • 降序:設置reverse=True
        lst.sort(reverse=True)  # 輸出:[3, 2, 1]
        

    • reverse() 逆序:反轉列表元素順序。
      lst = [1, 2, 3]
      lst.reverse()
      print(lst)  # 輸出:[3, 2, 1]
      

  • in 成員檢查:判斷元素是否在列表中。

    lst = [1, 2, 3]
    print(2 in lst)  # 輸出:True
    print(4 in lst)  # 輸出:False
    

列表小結

列表是動態的,適合存儲需頻繁修改的數據。例如,管理用戶輸入隊列時,用append添加新項,用pop處理完成項。


四、元組(Tuple)的常用方法

元組是不可變有序集合,用圓括號定義,如 tup = (1, "a", True)。一旦創建,不能修改元素,適合存儲常量數據。

1. 定義和特性
  • 定義:使用圓括號,元素間用逗號分隔。
    tup = (1, 2, 3)
    

  • 單元素元組:必須加逗號,否則會被識別為其他類型。
    single_tup = (1,)  # 正確:元組
    not_tup = (1)     # 錯誤:這是整數,不是元組
    

2. 常用方法
  • index(element) 返回索引:查找元素首次出現的位置,找不到會報錯。

    tup = ("a", "b", "c")
    print(tup.index("b"))  # 輸出:1
    

  • count(element) 統計元素出現次數

    tup = (1, 2, 2, 3)
    print(tup.count(2))  # 輸出:2
    

3. 優點
  • 不可變性:與字符串類似,元組創建后不能修改,避免意外變更。
  • 高效性:比列表更節省內存,訪問速度更快。
  • 適用場景:存儲配置參數、坐標點等固定數據。
    point = (10, 20)  # 表示坐標
    

元組小結

元組適合存儲不需要修改的數據。例如,函數返回多個值時,常用元組打包。


五、字典(Dictionary)的常用方法

字典是鍵值對集合,用花括號定義,如 d = {"name": "Alice", "age": 25}。支持快速查詢。

1. 定義和特性
  • 定義
    • 花括號:d = {"key": "value"}
    • dict()函數:d = dict(name="Alice", age=25)
  • 鍵和值要求
    • 鍵:必須是不可變類型(如字符串、數字、元組)。
    • 值:可以是任意類型(包括列表、字典等),支持嵌套。
    nested_dict = {"user": {"name": "Bob", "age": 30},"scores": [85, 90, 78]
    }
    

2. 遍歷字典
  • for key in d 遍歷鍵
    d = {"name": "Alice", "age": 25}
    for key in d:print(key, d[key])  # 輸出:name Alice, age 25
    

  • keys() 獲取所有鍵
    for key in d.keys():print(key)  # 輸出:name, age
    

  • values() 獲取所有值
    for value in d.values():print(value)  # 輸出:Alice, 25
    

  • items() 獲取鍵值對
    for key, value in d.items():print(f"{key}: {value}")  # 輸出:name: Alice, age: 25
    

3. 常用方法
  • update(other_dict) 合并字典:將另一個字典的鍵值對添加到當前字典。

    d1 = {"a": 1}
    d2 = {"b": 2}
    d1.update(d2)
    print(d1)  # 輸出:{'a': 1, 'b': 2}
    

  • pop(key) 刪除鍵值對:刪除指定鍵的鍵值對,并返回值。

    d = {"name": "Alice", "age": 25}
    age = d.pop("age")
    print(age)  # 輸出:25
    print(d)    # 輸出:{'name': 'Alice'}
    

  • popitem() 刪除最后一個鍵值對:刪除并返回最后插入的鍵值對(元組形式)。

    d = {"a": 1, "b": 2}
    item = d.popitem()
    print(item)  # 輸出:('b', 2)
    print(d)     # 輸出:{'a': 1}
    

  • clear() 清空字典:移除所有鍵值對。

    d = {"a": 1}
    d.clear()
    print(d)  # 輸出:{}
    

  • get(key, default) 安全獲取值:獲取鍵對應的值,鍵不存在時返回默認值(避免報錯)。

    d = {"name": "Alice"}
    print(d.get("name", "Unknown"))  # 輸出:Alice
    print(d.get("age", 0))           # 輸出:0(鍵不存在)
    

字典小結

字典適合快速查找和映射數據。例如,用戶管理系統用鍵(用戶ID)查詢值(用戶信息)。


六、總結與比較

  • 可變性
    • 列表和字典可變(可修改)。
    • 字符串和元組不可變(創建后不能改)。
  • 適用場景
    • 字符串:文本處理。
    • 列表:動態數據集合(如待辦事項)。
    • 元組:固定數據(如常量配置)。
    • 字典:鍵值映射(如數據庫查詢)。
  • 性能:元組比列表更高效;字典查詢速度極快($O(1)$時間復雜度)。
實際應用示例

一個簡單的用戶管理系統:

# 定義用戶數據(字典列表)
users = [{"id": 1, "name": "Alice", "age": 25},{"id": 2, "name": "Bob", "age": 30}
]# 添加用戶(列表操作)
users.append({"id": 3, "name": "Charlie", "age": 28})# 查詢用戶(字典操作)
def find_user(user_id):for user in users:if user["id"] == user_id:return userreturn None# 輸出用戶信息(字符串操作)
user = find_user(2)
if user:info = "Name: {}, Age: {}".format(user["name"], user["age"])print(info.center(30, "-"))  # 輸出居中格式


七、結語

掌握字符串、列表、元組和字典的常用方法,是Python編程的基石。本博客詳細講解了每個方法的用法、代碼示例和實際場景,幫助你從零開始構建扎實基礎。建議多動手練習,例如:

  • 用字符串方法清洗數據。
  • 用列表管理動態集合。
  • 用元組存儲常量。
  • 用字典實現快速查詢。
    如有疑問,歡迎留言討論!繼續學習Python高級特性,如集合(Set)或生成器(Generator),會讓你的代碼更強大。

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

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

相關文章

Liunx練習項目5.1-周期化任務;時間同步服務;

1.系統周期化任務1.1 at命令的用法at 時間 指定在規定的時間上執行相應的操作,完成操作crtlD完成編輯一分鐘后輸入的指令完成,創建了file{1..5}的文件at -l 查看系統上面所有用戶的調度at -c 可以查看該任務的指令at -d 加編號可以刪除該任務at -v 可以…

小皮面板搭建pikachu靶場

一、搭建所需的工具 1.下載小皮面板 下載地址為:小皮面板(phpstudy) - 讓天下沒有難配的服務器環境! 2.下載靶場所需的文件 下載地址為:https://github.com/zhuifengshaonianhanlu/pikachu 二、環境的搭建 打開小皮面板,使用所…

使用aiohttp實現高并發爬蟲

使用aiohttp來編寫一個高并發的爬蟲,想法很不錯,現實很骨感。這里我們要知道,由于高并發可能會對目標服務器造成壓力,請確保遵守目標網站的robots.txt,并合理設置并發量,避免被封IP。 我將通過示例代碼&…

【Linux庖丁解牛】— 信號量ipc管理!

1. 并發編程概念鋪墊> 多個執行流【進程】看到同一份資源:共享資源。> 被保護起來的資源叫做臨界資源。> 在進程中,涉及臨界資源的程序段叫做臨界區。【說人話就是程序中訪問共享資源的代碼】> 什么是互斥:任何時刻,只…

Spring Boot全局異常處理詳解

原代碼:package com.weiyu.exception;import com.weiyu.pojo.Result; import com.weiyu.utils.ErrorFileResponseUtils; import jakarta.servlet.http.HttpServletRequest; import lombok.extern.slf4j.Slf4j; import org.springframework.http.HttpStatus; import …

FHE技術將徹底改變在線隱私保護方式

1. 在線隱私的簡史 互聯網剛剛誕生時,所有的內容都是未加密的。人們通過一個特定的地址訪問網站,這個地址以“HTTP”開頭。當時,這并不是什么大問題,因為人們在線訪問的都是內容,而這些內容本身已經是公開的。但隨著電…

Cursor配置Java環境、創建Spring Boot項目

一:配置JDK和Maven cursor默認會讀取環境變量JAVA_HOME和MAVEN_HOME,如果沒有配置去找默認路徑~/.m2/settings.xml也可以手動指定:Ctrl Shift P 輸入"Preferences:Open User Settings(JSON)"打開settings.json文件,然…

win11添加無線顯示器(兩個筆記本實現雙屏)

前置條件: 兩個筆記本要要支持無線顯示器,支持藍牙; 1、自己重裝的win11系統,首先根據網上說明進去的時候,紅色顯示無無線投屏; 2、安裝網上操作,查看自己電腦是否支持無線投屏(是支…

【MAC技巧】Bash/Zsh切換失敗的故障排除

【MAC技巧】Bash/Zsh切換失敗的故障排除 Troubleshooting to Failure " chsh: no changes made" By JacksonML 在Mac電腦中,終端(Terminal)是常用的命令行工具,對開發和運維至關重要。 依照蘋果電腦的系統軟件迭代,終端中存有B…

卷積神經網絡-卷積的分類

卷積的定義卷積是圖像處理中最核心的操作之一,其本質是通過卷積核(濾波器)與圖像進行滑動窗口計算(像素值乘積之和),實現對圖像特征的提取、增強或抑制。一、二維卷積--針對二維矩陣進行處理1.1單通道見得最…

全網首發:使用GIT下載時崩潰退出,是因為機械硬盤

前面有幾篇文章,說是GIT下載會退出。開始以為是虛擬機問題。把家里的虛擬機復制到公司,照樣崩潰。后來認為是內存不足。昨天在家里下載代碼,也崩潰退出。心里覺得奇怪,試了一次,還是退出。差別在哪里?之前是…

YAML 自動化用例中 GET vs POST 請求的參數寫法差異

GET 請求:用 params 傳參(附加在 URL 上) config:name: "GET 查詢用戶信息"base_url: "https://api.example.com"teststeps:- name: "根據 userId 查詢用戶信息"request:method: GETurl: /api/user/detailpara…

使用 SeaTunnel 建立從 MySQL 到 Databend 的數據同步管道

SeaTunnel 是一個非常易用、超高性能的分布式數據集成平臺,支持實時海量數據同步。 每天可穩定高效地同步數百億數據,已被近百家企業應用于生產,在國內較為普及。 Databend 是一款開源、彈性、低成本,基于對象存儲也可以做實時分…

linux服務器換ip后客戶端無法從服務器下載數據到本地問題處理

服務器換ip后客戶端無法從服務器下載數據到本地,根據上圖提示,讓用戶清理下~/.ssh/known_hosts文件,下載恢復正常。

從0到1實現Shell!Linux進程程序替換詳解

目錄從0到1實現Shell!Linux進程程序替換詳解 🚀引言:為什么進程需要"變身術"?一、程序替換:進程的"換衣服"魔法 🔄1.1 什么是程序替換?1.2 程序替換的原理:內存…

暑期算法訓練.2

目錄 6.力扣 11.盛水最多的容器 6.1 題目解析: 6.2 算法思路: 6.2.1 暴力解法: 6.2.2 優化算法: 6.3 代碼演示: ?編輯 6.4 總結反思: 7.力扣 611.有效的三角形個數 7.1 題目解析: 7.2…

華為OD 消消樂游戲

1. 題意 游戲規則:輸入一個只包含英文字母的字符串,字符串中的兩個字母如果相鄰且相同,就可以消除。 在字符串上反復執行消除的動作,直到無法繼續消除為止,此時游戲結束。 輸出最終得到的字符串長度。 輸入 輸入原始…

小白學HTML,操作HTML文件篇(2)

目錄 一、添加多媒體 1.添加網頁圖片 2.添加網頁音頻 3.添加網頁視頻 二、創建容器 1. 標簽 2.布局 三、創建表格 1.表格標簽 2.添加表格表頭 3.添加表格標題 一、添加多媒體 在 HTML 網頁中可以輕松地使用標簽來添加圖片、音頻、視頻等多媒體,而這些多媒體并…

微服務架構中實現跨服務的字段級權限統一控制

結合集中式權限管理、分布式上下文傳遞、動態策略執行等技術 ??一、核心架構設計?? ??1. 分層控制模型?? ??網關層??:統一校驗用戶身份與基礎權限,攔截非法請求。 ??服務層??:基于用戶權限動態過濾數據字段,實現業務級控制。 ??策略中心??:集中管理權…

【實現100個unity特效之27】使用unity的ShaderGraph實現一個帶裁剪邊緣光的裁剪效果(2d3d通用)

文章目錄普通裁剪效果1、創建一個Lit Shader Graph2、ShaderGraph前置配置3、添加節點4、效果5、修改裁剪方向帶邊緣色的裁剪1、在裁剪的基礎上添加裁剪邊緣光2、邊緣的亮度3、修改裁剪方向4、效果5、我們可以代碼控制它的變化,如下2D3D游戲通用專欄推薦完結普通裁剪…