使用for循环遍历list和tuple,这种遍历成为迭代
在如C语言中都是通过下标拿到值,for...in这种方式其实是相同的。
在函数的一节,这样说--->‘求和函数sum(),sum(iterable,start),第一个参数必须是可以迭代对象,listtuple。’ 可迭代对象为list,tuple
所以使用for遍历时,对象是要可以迭代的。
如何判断一个对象能不能迭代?
Python的collections模块的Iterable可以判断是否可以迭代; isinstance()函数用来判断某种数据类型是否是已知的类型
>>>isinstance(1,int)Ture>>>isinstance(‘abc‘,str)Ture>>>isinstance(3.14,float)Ture>>>isinstance(‘3.14‘,float)False##################################### from collections import Iterable>>>isinstance([1,2,3,4,5],Iterable)Ture>>>isinstance(12345,Iterable)False>>>isinstance((1,2,3,4,5),Iterable)Ture>>>isinstance({‘name‘:‘jkl‘,‘age‘:15},Iterable)Ture
所以dict能使用for遍历处key或values或key,values
dict是一个能迭代的对象,具体的看使用环境
如何让一个list或者tuple同时显示下标和元素?
Python提供了enumerate()函数,把list或者tuple变成了:索引-元素对,就像键值对
t = [1,2,3,4,5] for k,v in enumerate(t) print(k,‘-‘,v)0-11-22-33-44-55-6
列表生成式
如要生成一个L = [2,4,6,8,10,12,14,......100]这样的list;
可以切片取出:
#这里使用list()把range()函数生成的序列数转成list,tuple也以同样的方法>>>L = list(range(1,101)) >>>L1 = L[1::2] >>>L1 [2,4,6,8,10,........]
还可以使用函数:
def create(): L = [] for x in range(1,51): L.append(x*2) print(L) return create()[2,4,6,8,10,12,......100]
以上代码都挺麻烦,使用列表生成式一行就可以解决掉
[x * 2 for x in range(1,101)] [2,4,6,8,10,.....100]
生成式还可以两个for循环嵌套,生成了一个全排列
[m * n for m in range(1,3) for n in range(1,5)] [1,2,3,4,2,4,6,8]
迭代表达式
t = (1,2,3,4,5,6) [k for k in t] [1,2,3,4,5,6]
加上其他的限定条件:一个list包含多个数据类型,取出字符串并将首字母大写
L = [‘grant‘,‘fitz‘,15,3.14,None] [x.title() for x in L if instance(x,str)] [‘Grant‘,‘Fitz‘]
时间: 2024-10-10 22:15:12