python元組遍歷
⑴ 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")
⑵ 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中實現循環指定次數
python中實現循環指定次數:
count=0
for item in list:
print item
count +=1 if count % 10 == 0:
print 'did ten'
或:
for count in range(0,len(list)):
print list[count] if count % 10 == 0:
print 'did ten'
在Python的for循環里,循環遍歷可以寫成:
for item in list:
print item
(3)python元組遍歷擴展閱讀:
Python 注意事項:
1、tuple:元組
(1)元組一旦初始化就不可修改。不可修改意味著tuple更安全。如果可能,能用tuple代替list就盡量用tuple。
(2)定義只有一個元素的tuple的正確姿勢:t = (1,),括弧內添加一個逗號,否則會存在歧義。
2、dict:字典
a.獲取value值:dict['key'],若key不存在,編譯器就會報錯KeyError。避免方法:
一是通過 in 判斷 key 值是否在dict中:
'key' in dict # 返回True 或 False。
二是通過 dict 的函數get():
dict.get('key') # 返回 value 值 或 None。
⑷ 軟體測試中,python字典遍歷的幾種方法
在python2.2之前,還只能用beys等字典方法來獲取鍵(因為不允許直接迭代字典)。
如果只需要值,可以使用d.values代替d.keys。
⑸ Python元組數據成對,如何讀取其中一個數據
python tuple是重要的數據格式
下面用代碼的形式給你列出用法
#不可變序列-----元組tuple
#元組和列表十分相似,元組和字元串一樣都是不可變的。
#元組由不同的元素組成,每個元素可以存儲不同類型的數據,例如
#字元串、數字和元組
#元組通常代表一行數據,而元組中的元素則代表不同的數據項
#創建元組,不定長,但一旦創建後則不能修改長度
#空元組
tuple_name=()
#如果創建的元組只有一個元素,那麼該元素後面的逗號是不可忽略的
>>>(4)
4
>>>user=('01','02','03','04')
#添加元組
user=(user,'05')
==>(('01','02','03','04'),'05')
#去重
>>>set((2,2,2,4,4))
set([2,4])
#訪問元組
user[0]
#不可修改元素
>>>user=(1,2,3)
>>>user[0]=2
Traceback(mostrecentcalllast):
File"<pyshell#5>",line1,in<mole>
user[0]=2
TypeError:'tuple'
#訪問二元元組
user1=(1,2,3)
user2=(4,5,6)
user=(user1,user2)
==>((1,2,3),(4,5,6))
printuser[0][0]
#解包
user=(1,2,3)
a,b,c=user
a=1,b=2,c=3
#元組的遍歷
#range([start],stop,[,step])返回一個遞增後者遞減的數字列表
foriteminrange(len(user)):
printuser[item]
#二元元組的訪問
foriinrange(len(user)):
forjinrange(len(user)):
print'user['+str(i)+']['+str(j)+']=',user[i][j]
#使用map()實現遍歷
#map(function_name,sequence[,sequence...])
#返回function處理後的列表
#sequence元組或列表
foriteminmap(None,user):
foriinitem:
printi
⑹ python中列表和元組之間有什麼區別
除了元組是不可變的之外,還應有語義上的區別來指導它們的用法。元組是異構數據結構(即它們的條目具有不同的含義),而列表是同類序列。元組具有結構,列表具有順序。
使用這種區別可以使代碼更加明確和易於理解。
一個示例是成對的頁和行號,以成對參考書中的位置,如:
my_location = (42, 11) # page number, line number
然後,可以將其用作字典中的鍵來存儲有關位置的注釋。另一方面,列表可用於存儲多個位置。自然地,人們可能想在列表中添加或刪除位置,因此使列表可變是有意義的。另一方面,從現有位置添加或刪除項目沒有意義-因此,元組是不可變的。
在某些情況下,可能想更改現有位置元組中的項目,例如在頁面的各行中進行迭代時。但是元組不變性迫使您為每個新值創建一個新的位置元組。從表面上看,這似乎很不方便,但是使用這樣的不可變數據是值類型和函數式編程技術的基石,它可以具有很多優點。
官方Python文檔也提到了這一點
「組是不可變的,並且通常包含一個異類序列…」。
在像Haskell這樣的靜態類型語言中,元組中的值通常具有不同的類型,並且元組的長度必須固定。在列表中,所有值都具有相同的類型,並且長度不是固定的。因此區別非常明顯。
⑺ python中的元組如果獲取其中的值
元組可以像列表一樣被索引。
元組和列表之間的主要區別是元組是不可變的--您不能將元組的元素設置為不同的值,也不能像從列表中添加或刪除元素那樣添加或刪除元素。但除此之外,在大多數情況下,它們的工作原理幾乎是一樣的。
⑻ python的元組和列表的區別
元組一旦設定不可改變,試圖改變會出錯
第一條帶來一個好處,就是元組可以用作字典的鍵,可以排列,等等(「因為有了哈希值」)
列表隨意改,長度和內容都可變
⑼ 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 字典和元組遍歷速度哪個快
當然是元組了,元組就相當於數組,直接按照索引去取元素。而字典是按照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),而不是根據不同數據結構的訪問速度差別。