##切片:取数列中的任意一个数,可用于list, L=list(range(99)) print(L[3:9]) print(L[:10]) print(L[-3:]) print(L[:20:3])##前二十个数,每3个取一个 ##或者tuple,tuple也是一种数列,不可变。 T=(1,2,3,4,5,6,7,8,9) print(T[:3]) ##字符串也可以看成list,用切片 S='hellokitty' print(S[2:6]) ##其实Java中的subSString()也是用的切片 ##迭代 也就是遍历,针对数组,列表,字符串,字典等 d = {'a': 1, 'b': 2, 'c': 3} for key in d: print(key) for value in d.values(): print(value) for k,v in d.items(): print(k,'=',v) print("---") ##只要是作用于一个可迭代的对象,for循环就可以正常运行,这个可迭代的对象不管是什么数据类型, ##那么怎么样才能判定一个对象是可迭代对象,,用collections模块的iterable类型判断。 from collections import Iterable A=isinstance('abcdfrngn',Iterable) print(A) #字典的存储顺序不固定,和list的不一样 #最后一个小问题,如果要对 list 实现类似 Java 那样的下标循环怎么办? #Python 内置的 enumerate 函数可以把一个 list 变成索引-元素对,这样就 #可以在 for 循环中同时迭代索引和元素本身: for i,value in enumerate(['a','B','C','D']): print(i,value) ##列表生成器 range() a=list(range(10,21)) print(a) L=[] for n in range(10,21): L.append(n*n) print(L) #for 循环后面还可以加上 if 判断,这样我们就可以筛选出仅偶数的平方: M=[x * x for x in range(1, 11) if x % 2 == 0] print(M) N=[] for x in range(1,11): if x % 2 ==0: N.append(x*x) print(N) ##还可以使用两层循环,可以生成全排列: L=[m + n for m in 'ABC' for n in 'XYZ'] print(L) L=[] for m in 'LIJIAN': for n in 'YANGYING': L.append(m+n) print(L) import os L=[] for d in os.listdir('.'): # os.listdir 可以列出当前目录的文件和目录 L.append(d) print(L) ##练习,把所有字符变成小写 L1 = ['FANBINGBing', 'yangMI',['LINZHILING','JINGTINA'], 2,True, 'JIAling', None] L2=[] for l in L1: if isinstance(l,str): L2.append(l.lower()) print(L2) ##在 Python 中,这种一边循环一边计算的机制,称为生成器: generator。节省内存,保存的算法 #要创建一个 generator,有很多种方法。第一种方法很简单,只要把一个 #列表生成式的[]改成(),就创建了一个 generator: L = [x * x for x in range(10)] g = (x * x for x in range(10)) print(L) print(g) #怎么取出generator中每一个元素 #可以用next()方法 ## 正确的方法是用迭代 for in print(next(g)) print('----') print(next(g))##发现每次调用一次next(),就会从g里面取出一个元素 print('----') for a in g: print(a)
python切片、迭代、列表生成器、生成器、迭代器
最新推荐文章于 2024-01-28 18:46:49 发布