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),而不是根据不同数据结构的访问速度差别。