當前位置:首頁 » 編程語言 » python遍歷元組

python遍歷元組

發布時間: 2022-06-24 14:39:27

⑴ 軟體測試中,python字典遍歷的幾種方法

在python2.2之前,還只能用beys等字典方法來獲取鍵(因為不允許直接迭代字典)。
如果只需要值,可以使用d.values代替d.keys。

⑵ python教材上這段代碼沒看懂啊 ,求解惑

這就是一個傳參的問題:
說下最後面total(10,1,2,3,jack=1123,john=2231,inge=1560)
這裡面 10傳到a;1,2,3 傳到numbers裡面;jack=1123,john=2231,inge=1560傳到phonebook裡面
這時:numbers 就是 (1,2,3) 變成一個元組,而phonebook就是一個字典{『jack』=1123,『john』=2231,『inge』=1560}
遍歷元組 字典 你會的吧?
這里的*numbers,**phonebook就是可變參數,可以學下 不定長參數(*args, **kwargs),位置參數,關鍵字參數,默認參數

⑶ python 字典和元組遍歷速度哪個快

當然是元組了,元組就相當於數組,直接按照索引去取元素。而字典是按照key去取元素(類似於hash表),速度當然比不上元組了。下面的測試可以提供一些直觀的感覺。


$python-mtimeit-s'a=dict(a=12,b=13,c=14)''fork,vina.items():''pass'
1000000loops,bestof3:0.391usecperloop
$python-mtimeit-s'a=(12,13,14)''forvina:''pass'
10000000loops,bestof3:0.12usecperloop


可以看到遍歷同樣是三個元素的dict的時間大致上是tuple的3倍左右。 (實際上這個時間包括了創建 dict 和 tuple 的時間,創建dict的時間也是要大於創建tuple的時間的,這里就不細分了,總之,dict的創建、訪問時間一定是大於tuple的)


但是在python中,dict是做過極度優化的,其效率已經非常高了,因為在python中它的使用實在是太廣了。所以在實際編程中,一般我們只根據實際需求來考慮使用什麼數據結構 (dict, list, set, tuple),而不是根據不同數據結構的訪問速度差別。

⑷ python中列表和元組之間有什麼區別

除了元組是不可變的之外,還應有語義上的區別來指導它們的用法。元組是異構數據結構(即它們的條目具有不同的含義),而列表是同類序列。元組具有結構,列表具有順序。
使用這種區別可以使代碼更加明確和易於理解。
一個示例是成對的頁和行號,以成對參考書中的位置,如:
my_location = (42, 11) # page number, line number

然後,可以將其用作字典中的鍵來存儲有關位置的注釋。另一方面,列表可用於存儲多個位置。自然地,人們可能想在列表中添加或刪除位置,因此使列表可變是有意義的。另一方面,從現有位置添加或刪除項目沒有意義-因此,元組是不可變的。
在某些情況下,可能想更改現有位置元組中的項目,例如在頁面的各行中進行迭代時。但是元組不變性迫使您為每個新值創建一個新的位置元組。從表面上看,這似乎很不方便,但是使用這樣的不可變數據是值類型和函數式編程技術的基石,它可以具有很多優點。
官方Python文檔也提到了這一點
「組是不可變的,並且通常包含一個異類序列…」。
在像Haskell這樣的靜態類型語言中,元組中的值通常具有不同的類型,並且元組的長度必須固定。在列表中,所有值都具有相同的類型,並且長度不是固定的。因此區別非常明顯。

⑸ Python列表,元組,集合,字典的區別和相互

元組和列表是類似的, 只是元組不可修改內容

注意這里指的是不可修改元組元素的指向, 你可以修改內容指向的內容

>>>lst=[1,2,3]#定義列表
>>>a=(1,2,lst,4)#注意元組a的a[2]是一個列表
>>>a
(1,2,[1,2,3],4)
>>>a[2]=4#試圖修改元組元素的指向,報錯
Traceback(mostrecentcalllast):
File"<pyshell#3>",line1,in<mole>
a[2]=4
TypeError:'tuple'
>>>a[2][0]=0#不修改元組元素的指向的元素,但是修改指向的內容
>>>a
(1,2,[0,2,3],4)
>>>a[2].append(5)#不修改元組元素的指向的元素,但是修改指向的內容
>>>a
(1,2,[0,2,3,5],4)

字典完全區別於列表和元組

因為字典使用hash表來存儲, 所以只有能夠進行hash運算的才能作為鍵值

個人認為, 一般不可變的都能作為鍵, 比如str/tuple/None/function.列表不能作為鍵

最後, 由於字典是hash表演算法{字典查找O(1), 列表遍歷O(n)}, 在數據量巨大的時候, 字典的查找效率出奇的高

⑹ python裡面元組是什麼意思

元組其實和列表的差距並不是很大,但是也有其獨立的特點:

①元組是一系列不可變的Python對象。元組是一種序列,就像列表一樣;列表通常用來存儲相同類型的數據;而元組在實際開發中,通常用來存儲不同類型的數據。

②元組和列表之間的主要區別是元組不能像列表那樣改變元素的值,可以簡單地理解為「只讀列表」。 元組使用小括弧 -(),而列表使用方括弧 -[];

③元組創建很簡單,只需要在括弧中添加元素,並使用逗號隔開即可。

<p class="ztext-empty-paragraph">

  • 創建元組:需使用逗號分隔值放入小括弧的一個序列。 或者,也可以將這些逗號分隔值放在括弧之間。

  • 元組元素的訪問:請使用方括弧進行指定索引切片或索引,以獲取該索引處的值。

    • 更改元組:元組是不可變的,但是可以使用現有元組的一部分來創建新的元組。

    • 刪除元組元素:元組中的元素值是不允許刪除的,但我們可以使用del語句來刪除整個元組。


python元組構建了對象的簡單組合,元組與列表非常相似,但元組不能在原位置修改,通常寫成包在圓括弧中的一系列項,且具有列表的大多數屬性。

元組是:

  • 任意對象的有序集合:與字元串和列表類似,元組是一個基於位置的有序對象集合,可以嵌入任何類型的對象。

  • 通過偏移量存取:同字元串、列表一樣,元組中的元素也是通過偏移量來訪問的,支持索引和分片。

  • 屬於「不可變序列」:與字元串相同,元組是不可變的,不支持適用於列表的任何原位置修改操作。

  • 固定長度、多樣性、任意嵌套:元組不可變,所以不能改變元組長度,元組可以包含復合對象,支持任意嵌套。

  • 對象引用數組:與列表相似,元組也是對象引用的數組,存儲了指向其他對象的存取點。

⑺ python中的元組如果獲取其中的值

元組可以像列表一樣被索引。
元組和列表之間的主要區別是元組是不可變的--您不能將元組的元素設置為不同的值,也不能像從列表中添加或刪除元素那樣添加或刪除元素。但除此之外,在大多數情況下,它們的工作原理幾乎是一樣的。

⑻ python的元組和列表的區別

  1. 元組一旦設定不可改變,試圖改變會出錯

  2. 第一條帶來一個好處,就是元組可以用作字典的鍵,可以排列,等等(「因為有了哈希值」)

列表隨意改,長度和內容都可變

⑼ python list遍歷問題,跪求大神指導

list=[('1abc','11112sfgsd'),('g5sd','11112rtrt'),
('y234','eare4543'),('wetw','eareewtwe'),('ryhe','eare'),
('8989','5633tewtt'),('a34f','ertyey')]
list2=[]
#找鍵值插入
foreinlist:
head=e[1].split('')[0]#提取鍵值
found=False
idx=0
forrinlist2:#看鍵值是否存在
ifr[0]==head:
found=True;
break
idx=idx+1
iffound:
list2[idx][1].append(e)#存在直接追加
else:
list2.append([head,[e]])#不存在創建新list
#Tuple化
list3=[]
foreinlist2:
list3.append((e[0],tuple(e[1])))
list3=tuple(list3)

print(list3)

運行結果:

⑽ python怎樣把一級分類下面的多級分類都給遍歷出來

廢話不多說。首先要實現這個,具體思路是:
1.給定父文件夾路徑,找出該文件夾中所有的內容(文件夾或文件)。
2.篩選出內容中的文件夾。
總的來說,實現還是挺簡單的,python的os包也提供了許多方法。具體看代碼
[python] view plain
# -*- coding: UTF-8 -*-

import os.path
#定義一個函數,path為你的路徑
def traversalDir_FirstDir(path):
#定義一個列表,用來存儲結果
list = []
#判斷路徑是否存在
if (os.path.exists(path)):
#獲取該目錄下的所有文件或文件夾目錄
files = os.listdir(path)
for file in files:
#得到該文件下所有目錄的路徑
m = os.path.join(path,file)
#判斷該路徑下是否是文件夾
if (os.path.isdir(m)):
h = os.path.split(m)
print h[1]
list.append(h[1])
print list

traversalDir_FirstDir("E:\\xlrd-1.0.0")
輸出結果為:

[plain] view plain
build
dist
scripts
tests
xlrd
xlrd.egg-info
['build', 'dist', 'scripts', 'tests', 'xlrd', 'xlrd.egg-info']
Python有一個方法是os.path.isdir(pyth),即判斷該路徑下的文件下是否是文件夾,其傳入的參數的參數是路徑,我在想,Python要是提供一個方法,返回該文件下的所有文件路徑就好,但貌似我沒有找到。所以用了os.listdir(pyth),得到了路徑下的所有內容名,然後又用了join()方法把其轉化成路徑~,額,有些麻煩了。其中split()會把路徑截成一個二元組(路徑,文件名)

其實有個方法,os.walk()方法可以得到該文件夾下所有文件夾和文件,但我只要求得到子一級文件夾哈。具體可參考旁邊鏈接:點擊打開鏈接。
下面再附上Python的 os的一些屬性方法:os模塊方法

因之前我學過一些Java,所以感覺Python語法跟Java差不多,不過比Java更加簡練

額,發現一個函數,glob()方法可以直接得到一個文件夾下所有的路徑。上面的代碼可以改進如下:

[python] view plain
# -*- coding: UTF-8 -*-
import glob
import os.path
def traversalDir_FirstDir(path):
list = []
if (os.path.exists(path)):
#獲取該目錄下的所有文件或文件夾目錄路徑
files = glob.glob(path + '\\*' )
print files
for file in files:
#判斷該路徑下是否是文件夾
if (os.path.isdir(file)):
#分成路徑和文件的二元元組
h = os.path.split(file)
print h[1]
list.append(h[1])
print list

traversalDir_FirstDir("E:\\xlrd-1.0.0")

熱點內容
acm離線文本編譯器 發布:2022-07-05 14:56:02 瀏覽:448
壓縮模具孔 發布:2022-07-05 14:55:47 瀏覽:725
開頭腳本 發布:2022-07-05 14:53:50 瀏覽:999
我的世界基岩版有多少個伺服器 發布:2022-07-05 14:53:43 瀏覽:682
vbnet資料庫開發 發布:2022-07-05 14:50:55 瀏覽:293
leu存儲 發布:2022-07-05 14:48:09 瀏覽:364
gzip解壓java 發布:2022-07-05 14:45:34 瀏覽:386
S7伺服器管理系統是什麼 發布:2022-07-05 14:44:07 瀏覽:479
直播團隊需要哪些人員配置 發布:2022-07-05 14:42:08 瀏覽:134
python爬蟲瀏覽器 發布:2022-07-05 14:41:31 瀏覽:381