您的位置:首页 > 编程语言 > Python开发

python切片、迭代、列表生成器、生成器、迭代器

2018-02-07 13:53 567 查看
##切片:取数列中的任意一个数,可用于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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: