迭代
如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration)
在Python中,迭代是通过for...in来完成的。
d = {'a':1,'b':2,'c':3}
for key in d:
print(key)
默认情况下,dict迭代的是key
for value in d.values():
print(value)
如果要迭代value,可以用for value in d.values()
for k,v in d.items():
print(k,v)
如果要同时迭代key和value,可以用for k, v in d.items()
由于字符串也是可迭代对象,因此,也可以作用于for循环:
for ch in 'ABCD':
print(ch)
只要是可迭代对象,都可以迭代,不用关心该对象究竟是list还是其他数据类型
可以通过collections模块的Iterable类型判断
from collections import Iterable
print(isinstance('abc', Iterable))#str是否可迭代
print(isinstance([1,2,3],Iterable))#list是否可迭代
print(isinstance(123,Iterable))#整数是否可迭代
如果要对list实现类似Java那样的下标循环怎么办
Python内置的enumerate函数可以把一个list变成索引-元素对
for i,value in enumerate(['a','b','c']):
print(i,value)
列表生成式
列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式。
要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]可以用list(range(1, 11)):
print(list(range(1, 11)))
但如果要生成[1x1, 2x2, 3x3, ..., 10x10]怎么做?方法一是循环
L = []
for x in range(1,11):
L.append(x*x)
print(L)
但是循环太繁琐,而列表生成式则可以用一行语句代替循环生成上面的list:
写列表生成式时,把要生成的元素x * x放到前面,后面跟for循环,就可以把list创建出来
for循环后面还可以加上if判断,比如选出仅偶数的平方:
x = [x*x for x in range(1,11) if x%2==0]
print(x)
还可以使用两层循环,可以生成全排列:
e = [m + n for m in 'abc' for n in 'xyz']
print(e)
运用列表生成式,可以写出非常简洁的代码。例如,列出当前目录下的所有文件和目录名,可以通过一行代码实现:
import os
print([d for d in os.listdir('.')])#os.listdir可以列出文件和目录
for循环可以使用两个或多个变量
c = {'x':1,'y':2,'z':3}
for k,v in c.items():
print(k,v)
#因此列表生成式可以使用两个变量来生成list
x = {'x':'A','y':'B','z':'c'}
print([k + '= '+ v for k ,v in x.items()])
把list所有字符串变成小写
j = ['Hello','Word','IBM','Apple']
print([s.lower() for s in j ])
文章来源: 松勤网
-
初心不变的唯美句子 做不到人人满意经典话 经典寓言故事 王者网名 安全分享 幼儿园实习总结 毕业个人鉴定 退网的网名 团队协作的重要性总结 享受走路的唯美句子 会议总结 有深意的微信昵称 爱的教育读后感500字 发荔枝的朋友圈说说 劳务合同 祝福成语 高级表白密码 伤感繁体字网名 女生吃鸡id俏皮一点 下雪文案短句干净 村干部工作总结 仿照手指写五官的一段话 周末愉快短句暖心句子 陪伴作文 伤感网名大全2022最新版 收到老公红包感谢的话 2022希望疫情结束的唯美句子 文雅的网名 月亮作文 早安暖心话(0) 回复 (0)
-
讨债公司/蓝月传奇辅助/蓝月辅助(0) 回复 (0)