python數據結構學習系列

在Python編程中,數據結構是組織、管理和存儲數據的方式,以便能夠有效地執行特定的操作。數據結構的選擇對于算法的效率、代碼的清晰度和可維護性都至關重要。以下是對Python中常見數據結構的學習總結。

  1. 列表(List)

    • 列表是Python中最基本的數據結構之一,它支持索引、切片、追加和刪除等操作。
    • 列表可以包含不同類型的元素,并且大小是動態的。
    • 列表支持負索引,可以從末尾開始計數。
    • 常用操作:append(),?insert(),?remove(),?pop(),?index(),?count(),?sort(),?reverse()等。例如:
      weather_forecast = ["晴", "雨", "多云", "雪", "霧", "晴", "風"]  
      print(weather_forecast[2])  # 輸出:多云
  2. 元組(Tuple)

    • 元組與列表相似,但它是不可變的,這意味著一旦一個元組被創建,就不能修改其內容。
    • 元組通常用于存儲不可變的數據集合,如坐標點或函數返回的多個值。
    • 由于元組是不可變的,因此在需要高效查找和不變性的情況下,它們通常比列表更快。 例如:
      point1 = (1, 2)  
      point2 = (4, 6)  
      distance = ((point2[0] - point1[0])**2 + (point2[1] - point1[1])**2)**0.5  
      print(distance)  # 輸出:5.0
  3. 字典(Dictionary)

    • 字典是一個無序的鍵值對集合。
    • 字典允許通過鍵快速查找值,平均時間復雜度為O(1)。
    • 字典在Python中非常常用,因為它們是存儲和檢索數據的有效方式。
    • 常用操作:get(),?set(),?update(),?keys(),?values(),?items(),?pop()等。例如:
      students = {"張三": 1001, "李四": 1002, "王五": 1003}  
      print(students["李四"])  # 輸出:1002
  4. 集合(Set)

    • 集合是一個無序的、不重復的元素集合。
    • 集合用于執行成員檢測、消除重復項以及數學運算(如并集、交集、差集等)。
    • 集合不支持索引和切片操作,但支持快速的成員檢測。
    • 常用操作:add(),?remove(),?discard(),?pop(),?union(),?intersection(),?difference(),?symmetric_difference()等。例如:
      list1 = [1, 2, 3, 4, 5]  
      list2 = [4, 5, 6, 7, 8]  
      common_elements = set(list1) & set(list2)  
      print(common_elements)  # 輸出:{4, 5}
  5. 字符串(String)

    • 字符串在Python中是不可變的字符序列。
    • 字符串支持索引、切片、連接、分割等操作。
    • 字符串是不可變的,這意味著一旦創建了一個字符串,就不能修改它。但可以通過連接、切片等操作生成新的字符串。
    • 常用操作:len(),?find(),?replace(),?split(),?join(),?lower(),?upper(),?strip()等。例如:
      name = "張三"  
      greeting = "歡迎, " + name + "!"  
      print(greeting)  # 輸出:歡迎, 張三!
  6. 自定義數據結構

    • 除了內置的數據結構外,Python還允許程序員根據需要定義自己的數據結構。
    • 常見的自定義數據結構包括棧、隊列、鏈表、樹和圖等。
    • 這些數據結構在實現特定的算法和應用程序時非常有用。

總的來說,選擇適當的數據結構對于編寫高效、可維護的Python代碼至關重要。不同的數據結構適用于不同的應用場景,因此需要根據具體的需求來選擇合適的數據結構。通過學習和實踐,我們可以更好地掌握Python中的數據結構,并在編程中靈活應用它們。

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

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

相關文章

selenium測試工具用來模擬用戶瀏覽器的操作

執行JS的類庫:execjs,PyV8,selenium,node pip list pip install selenium pip install xlrd pip install xlwt pip install PyExecJS pip install xlutils selenium測試工具可以用來模擬用戶瀏覽器的操作,其支持的瀏覽…

能當老板的AI大模型多智體框架MetaGPT自動完成項目

能當老板的AI大模型多智體框架MetaGPT自動完成項目。 MetaGPT是一個創新的多智能體框架,它結合了大語言模型(LLM)和多智能體協作系統,旨在通過模擬人類工作流程來解決復雜問題。這個框架的核心在于將標準化操作程序(SO…

Redis學習路徑(構建體系)

學習路徑 掌握數據類型(分析底層數據結構)和緩存的基本使用 (理論使用) 掌握 redis 實現高性能,高可靠、高可用技術 (理論)學習redis源代碼底層實現 (底層實現) 先來一個引言,比較宏觀的角度&#xf…

Linux常用操作命令

Linux作為一種廣泛應用的操作系統,其強大的命令行工具使得用戶能夠高效地管理文件、處理數據和監控系統。在本文中,我們將深入 探討一些常用的Linux操作命令及其用法。 ls:列出當前目錄下的文件和子目錄。 ls [選項] [文件或目錄]常用選項&am…

Python實現MACD工具判斷信號:股票技術分析的工具系列(1)

Python實現MACD工具判斷信號:股票技術分析的工具系列(1) 介紹代碼rolling函數介紹核心代碼計算指數移動平均值計算MACD指標 完整代碼 介紹 先看看官方介紹: MACD (平滑異同平均線) 指標說明 DIF線:收盤價短…

#單片機(TB6600驅動42步進電機)

1.IDE:keil 2.設備:保密 3.實驗:使用單片機通過普通IO口控制TB6600驅動42步進電機 4.時序圖: TB6600 ENA、ENA-DIR-、DIRPUL-、PULB-、BA、A-VCC、GND使能電機(直接懸空不接)方向脈沖輸入(普通IO口模擬即可&#xff…

Linux系統編程7--線程 寫個測試腳本

Linux系統編程7–線程_寫個測試腳本 參考博客: Linux多線程編程初探 - 峰子_仰望陽光 - 博客園 (cnblogs.com) 我的PC是8核*16進程,所以在固定的時間點,我可以同時運行8 * 16的進程,更多的線程(任務管理器)…

【學習筆記】Diffusion擴散模型

導讀 Diffusion models是現在人工智能領域最火的方向之一,并引爆了AIGC領域,一大批創業公司隨之誕生。 AIGC(AI-Generated Content):人工智能創作內容的生產方式。 擴散模型Diffusion 擴散模型Duffison的訓練過程 …

等概率事件算法

1等概率的生成(0-8)范圍內的正整數 // Math.random 數據范圍[0,1) 且 是 等概率的產生隨機數 // 應用: // 1.生成等概率的整數(等概率的生成(0-8)范圍內的正整數 int value (int) (Math.random() * 9); System.out.println("value "…

非阻塞實現高效鍵盤掃描功能(STM32F4XX)

目錄 概述 1 原理分析 1.1 技術背景 1.2 系統硬件 1.3 STM32 IO(輸入模式)寄存器分析 1.3.1 輸入IO的功能描述 1.3.2 輸入配置 1.3.3 GPIO 寄存器(輸入模式相關) 1.3.3.1 GPIO 端口模式寄存器 1.3.3.2 GPIO 端口上拉/下拉…

springboot,druid動態數據源切換

關鍵字:springboot,druid數據庫連接池,兩個數據源(可以切換成多個),事務管理 關于druid簡介傳送門:https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98 具體分為四…

Doris【數據模型】

一、數據模型簡介 在 Doris 中,數據以表(Table)的形式進行邏輯上的描述。 一張表包括行(Row)和列(Column)。Row 即用戶的一行數據。Column 用于描述一行數據中不同的字段。 Column 可以分為兩…

autoware.universe中跟蹤模塊詳解,一看就懂!

目錄 問題:閱讀關鍵點:總結問題: 根據對預測模塊代碼的分析,發現預測框出現在點云前方的原因在于跟蹤框出現在點云前方 對rviz上的目標進行觀察后發現 車輛的檢測框先出來一段時間后,跟蹤框和預測框同步一塊出來 跟蹤框總是超出點云一部分 閱讀關鍵點: 每個跟蹤器最少要統計…

7.1.2 Selenium的用法1

目錄 1. 初始化瀏覽器對象和訪問頁面 2. 查找節點及節點交互 2.1 查找單個節點 (1)獲取方法1——特定方法 (2)通用方法 2.2 查找多個節點 2.3 節點交互 3. 動作鏈 4. 執行 JavaScript 之下拉進度條 5. 獲取節點信息 5.…

谷歌seo推廣秒收錄怎么做?

谷歌SEO推廣秒收錄想要做到,可以利用我們光算科技獨家技術,GSI快速收錄,通過技術手段和操作,幫你的網站快速被谷歌發現和記錄 這項技術具體核心就是GPC爬蟲池系統,這個系統是專門研究谷歌搜索引擎優化的規律和算法創造…

【QT】QTableView或QTableWidget 搭配QLineEdit實現數據的搜索顯示

在 Qt 中,QTableView 和 QTableWidget 都可以用來實現數據的搜索和顯示,但它們的適用場景和實現方式有所不同: QTableView 適用場景:QTableView 適用于更復雜的場景,尤其是當需要處理大量數據或需要高度定制化的表格時…

66-ES6:var,let,const,函數的聲明方式,函數參數,剩余函數,延展操作符,嚴格模式

1.JavaScript語言的執行流程 編譯階段:構建執行函數;執行階段:代碼依次執行 2.代碼塊:{ } 3.變量聲明方式var 有聲明提升,允許重復聲明,聲明函數級作用域 訪問:聲明后訪問都是正常的&…

拿下邊界機器進行內網滲透的方案

拿下機器后,使用代理訪問內網 windows環境:reGeorg與proxifier Linux環境:reGeorg與proxychains, 使用nmap等工具進行掃描,發現web服務的主機和其它信息。有時這些邊界機器上會記錄一些 內網服務器上的一些信息&…

QT C++實現點擊按鍵彈出窗口并顯示圖片/視頻|多窗口應用程序的設計和開發

一、介紹 首先,QT界面開發中主要大體分為2種多窗口的形式: 嵌入式: 新生成的窗口嵌入在主窗口內部獨立窗口: 以彈窗形式的新窗口生成和展示 這里就講解最簡單的:點擊案件后,跳出一個新窗口 二、代碼實…

利用FFMPEG 將RTSP流的音頻G711 轉碼為AAC 并 推流到RTMP

之前我們的視頻轉碼項目中 是沒有加入音頻的 現在 需要加入音頻 ,由于RTMP只支持AAC的 音頻流 而有的RTSP流的音頻編碼并不是AAC 大多數都是G711編碼 還分為G711A 和G711U 之前用ffmpeg命令行可以直接 完成轉碼 并推送到RTMP 但是考慮到無法獲取更詳細的狀…