Python3數據結構

列表:

Python列表是可變的,這是它區別于字符串數組和元組的最重要的特點。列表可以修改,而字符串和元組不能。

?

以下是Python中列表的描述方法:

方法

描述

list.append(x)

將元素添加到列表結尾

list.extend(L)

通過添加指定列表的所有元素來擴充列表

list.insert(i,x)

在指定位置插入一個元素,第一個參數是準備插入到其前面的那個元素的索引

list.remove(x)

刪除列表中值為x的第一個元素,如果沒有這個元素會返回一個錯誤。

list.pop([i])

從列表的指定位置移除元素,并將其返回。如果沒有指定索引,a.pop()會返回最后一個元素。元素隨機從列表中被移除。

list.clear()

移除列表中所有項

list.index(x)

返回列表中第一個值為x元素的索引。如果沒有匹配的元素就返回一個錯誤。

list.count(x)

返回x在列表中出現的次數

list.sort()

對列表中的元素進行排序

list.reverse()

倒排列表中的元素

list.copy()

返回列表的淺復制

?

?

?

類似于insert、remove、sort等修改列表的方法是沒有返回值的。

將列表當作堆棧使用:

列表方法使得列表可以很方便的作為一個堆棧來說使用,堆棧作為特定的數據結構,最先進入的元素最后一個被釋放。用gappend()方法可以把一個元素添加到堆棧頂。用不指定索引的pop()方法可以把一個元素從堆棧頂釋放出來。

?

?

?

將列表當作隊列使用,只是在隊列里第一加入的元素第一個取出來,但是這樣拿列表用作這樣的目的效率不高。在列表的最后添加或彈出的元素速度快。然而在列表里插入或者從頭部彈出速度卻不快。(因為所有其他元素逗得一個一個移動)

?

?

?

列表推導式

列表推導式提供了從序列創建列表的簡單途徑。通常應用程序將一些操作應用于某個序列的每個元素,用其獲得的結果作為生成新列表的元素,或者根據確定判斷條件創建子序列。

每個列表推導式都在for之后跟一個表達式,然后有0到多個for或if子句,返回結構是一個根據表達從其后的for和if上下文環境中生成出來的列表。如果希望表達式推導出一個元組,就必須使用括號。

?

?

?

對序列中每個元素的逐一調用某方法

?

?

?

我們可以使用if子句作為過濾器

?

?

?

以下還有一些關于循環和其他技巧的演示:

?

?

?

列表推導式可以使用復雜表達式或嵌套函數

?

?

?

嵌套列表解析

Python的列表還可以嵌套

?

?

也可以使用以下方法實現:

?

?

del語句

使用del語句可以從一個列表中依索引而不是值來刪除一個元素。這與使用pop()返回一個值不同,可以用del語句從列表中刪除一個切割,或者情況整個列表

?

?

也可以使用del刪除實體變量

del a

?

元組和序列

元組是由 若干逗號跟個的值

?

?元組在輸出時總有括號的,以便于正確表達嵌套結構,在輸入時可能有或者沒有括號,不過括號通常是必須的(如果元組是更大的表達式的一部分)

?

集合

集合是一個無須不重復的集,基本功能包括關系測試和消除重復元素。

可以使用大括號{}創建集合。注意:如果要創建一個空集合,必須使用set()而不是{};后者創建一個空的字典。

?

?

集合也支持推導式:

字典

另一個非常常用的Python內建數據類型是字典。

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

理解字典的最佳方式就是把它看作無序的鍵=>值對集合。同一個字典內,關鍵必須互不相同。

一堆大括號創建一個空的字典:{}

?

?

構造函數dict()直接從鍵值對元組列表中構建字典。如果有固定格式,列表推導式指定特定的鍵值對:

?

?

字典推到可以用來創建任意鍵和值的表達式詞典:

?

?如果關鍵字只是簡單的字符串,使用關鍵字參數指定鍵值對有時候會更方便:

?

?

遍歷技巧

在字典遍歷時,關鍵字和對應的值可以使用items()方法同時解讀出來:

?

?

在序列中遍歷時,索引位置和對應值可以使用enumerate()函數同時得到:

?

?

同時遍歷兩個或更多的序列,可以使用zip()組合:

?

?

要反向遍歷一個序列,首先指定這個序列,然后調用reversed()函數:

?

?

要按順序遍歷一個序列,使用sorted()函數返回一個已排序的序列,不修改原值:

?

轉載于:https://www.cnblogs.com/wanghao-boke/p/11474390.html

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

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

相關文章

sed、awk工具

ed sed意為流編輯器(Stream Editor),在Shell腳本和Makefile中作為過濾器使用非常普遍,也就是把前一個程序的輸出引入sed的輸入,經過一系列編輯命令轉換為另一種格式輸出。sed和vi都源于早期UNIX的ed工具,所…

C語言正則表達式

POSIX規定了正則表達式的C語言庫函數,詳見regex(3)。我們已經學習了很多C語言庫函數的用法,讀者應該具備自己看懂man手冊的能力了。本章介紹了正則表達式在grep、sed、awk中的用法,學習要能夠舉一反三,請讀者根據regex(3)自己總結…

makefile通用版本

實際當中程序文件比較大,這時候對文件進行分類,分為頭文件、源文件、目標文件、可執行文件。也就是說通常將文件按照文件類型放在不同的目錄當中,這個時候的Makefile需要統一管理這些文件,將生產的目標文件放在目標目錄下&#xf…

Python3OS文件/方法

Python3OS文件/方法 os模塊提供了非常豐富的方法用來處理文件和目錄。 方法 描述 os.access(path,mode) 檢驗權限模式 os.chdir(path) 改變當前工作目錄 os.chflags(path,flags) 設置路徑的標記為數字標記 os.chmod(path,mode) 更改權限 os.chown(path,uid,gid) 更改…

Python3文件

open()方法 Python open()方法永于打開一個文件,并返回文件對象,并對文件進行處理過程中都需要用到這個方法,如果該文件無法被打開,則拋出OSError 注意:使用open()方法一定要保證關閉文件對象,即調用close(…

Python3輸入輸出

Python兩種輸出值的方式,表達式語句和print()函數。 第三種方式是使用文件對象的write()方法,標準輸出文件可以用sys.stdout的引用。 如果你希望輸出的形式更加多樣,可以使用str.fomat()函數來格式化輸出值。 如果你希望將輸出的值轉化成字符…

動態庫加載順序

1.編譯目標代碼時指定的動態庫搜索路徑; 2.環境變量LD_LIBRARY_PATH指定的動態庫搜索路徑; 3.配置文件/etc/ld.so.conf中指定的動態庫搜索路徑; 4.默認的動態庫搜索路徑/lib; 5.默認的動態庫搜索路徑/usr/lib。 轉載于:https://ww…

Python3正則表達式

正則表達式是一個特殊的字符序列,他能幫助你方便的檢查一個字符串是否與某種模式匹配。re.match函數 re.match嘗試從字符串的起始位置匹配一個模式,如果不是起始位置匹配成功的話,match()就返回一個none。 函數語法: re.match(pat…

C/C++輸入

fgets(str,n,stdin) 從鍵盤輸入一行,替代gets()。讀取到n-1字節時或換行符時終止,如果是文件的話,讀到文件結尾也會停止 getline(cin,str) str的類型必須是string類,它是C特定的字符串類,區別于C的char *數據類型。 ci…

strlen和sizeof的區別

C語言中沒有字符串,用的是字符數組來模擬字符串。 C風格的字符串時字符數組然后在末尾加0表示結尾。 在C語言中有strlen和sizeof兩個函數求字符數組的長度函數,他們倆的區別就是是否把最后的結束標志也加上去。 strlen是不加的,他表示字符串的…

shell編程練習題

求2個數之和計算1-100的和將一目錄下所有的文件的擴展名改為bak編譯當前目錄下的所有.c文件:打印root可以使用可執行文件數,處理結果: roots bins: 2306打印當前sshd的端口和進程id,處理結果: sshd Port&&pid: 22 5412輸出本機創建20…

shell編程題(一)

求2個數之和 #!/bin/bashfunction add {if(( $# < 2 )); thenecho "The arg int correct"elsesum$(($1$2))echo $sumfi }add 1 add 1 2 運行結果&#xff1a; exbotubuntu:~/shareWin/linux/shell$ ./sum.sh 1 2The arg int correct3 $#&#xff1a;相當于C語言…

vimset

vim ~./vimrc set nocompatible "去掉有關vi一致性模式&#xff0c;避免以前版本的bug和局限 set nu! "顯示行號 set guifontLuxi/ Mono/ 9 " 設置字體&#xff0c;字體名稱和字號 filetype on …

shell編程題(二)

計算1-100之和 #!/bin/bashsum0 for i in seq 1 100;do #符號不是單引號 是 1左邊的符號sum$[$i $sum ] done echo $sum #!/bin/bashi0 n1              #定義循環變量 while [ $n -lt 101 ];do  #循環變量小于101 i$(( $i $n))        #累加 n$(( …

vim命令大全

1. vim模式 正常模式&#xff08;按Esc或Ctrl[進入&#xff09; 左下角顯示文件名或為空 插入模式&#xff08;按i進入&#xff09; 左下角顯示--INSERT-- 可視模式&#xff08;按v進入&#xff09; 左下角顯示--VISUAL-- 替換模式&#xff08;按r或R開始&#xff09; 左下角顯…

signal()函數

函數原型 void (*signal(int sig,void(*func)(int)))(int); 指定使用sig指定的信號編號處理信號的方法。參數func指定程序可以處理信號的三種方式之一&#xff1a; l 默認處理(SIG_DFL)&#xff1a; 信號由該特定信號的默認動作處理l 忽略信號&#xff08;SIG_IGN&a…

setitimer()函數

定時器時間函數 struct itimerval&#xff1a;struct itimerval *new_value&#xff0c;其定義如下&#xff1a;struct itimerval {struct timeval it_interval; /*next value*/struct timeval it_value; /*current value*/};struct timeval {long tv_sec; /*seconds*/lonng t…

shell編程題(三)

將一目錄下所有的文件的擴展名改為bak #! /bin/bashfor i in ls domv $i ${i%%.*}.bak done ${i%%.*} 截掉一個變量字符串第一個"."以及其右側的所有字符&#xff0c;即最短前綴匹配。 #! /bin/bashdir./ #指定文件夾for file in $dir*.txt #指定文件夾下面文件類型…

VMware安裝VMwaretools

默認點擊“安裝VMware Tools&#xff08;T&#xff09;”選項下載好安裝包 下載的安裝包放在計算機的media目錄下 進入/media/ubuntu14-04/VMware Tools目錄&#xff1a; cd /media/ubuntu14-04/VMware Tools 將安裝包復制到tmp文件夾下&#xff1a; cp VMwareTools-10.0.5-322…

shell編程題(四)

編譯當前目錄下的所有.c文件 #!/bin/bashif [ $# -lt 1 ] ;then #如果輸入參數小于1則報錯 $# C語言中的argv[0] 輸入參數個數echo "Please follow up file.c!"echo "eg: ./make.sh xxx.c"exit fiif [[ $2 "debug" ]] ;then #如果第三個參數…