python中列表生成式的使用
i=list(range(1,11))##自动生成一个1到10的list#
print(i)
o=tuple(range(1,11))##自动生成一个1到10的tuple
print(o)
####自动生成一个1到10平方的lsit####
L=[]
for x in range(1,11):
L.append(x*x)
print(L)
###上面用for循环比较麻烦,用列表生成器生成如下###
M=[x*x for x in range(1,11)]
print(M)
###用两层循环可以生成全排列####
N=[m+n for m in 'ABC' for n in 'XYZ']
print(N)
import os##导入os模块
K=[k for k in os.listdir('.')]##os.listdir可以列出该目录下的所有文件
print(K)
###有for循环输出dict的键和值###
dict_1={'a':'A','b':'B','c':'C','d':'D'}
for q,w in dict_1.items():
print(q,'=',w)
###利用dict,用列表生成器生成两个变量的list####
print([s + '=' + f for s,f in dict_1.items()])
###将大写字母全部转化为小写字母###
list_1=['ABS','SSS','FGSDFG']
print([s.lower() for s in list_1])
python中生成器的使用
L=[x*x for x in range(11)]
print(L)
L_1=(x*x for x in range(11))##定义了一个generator
##作用:调用的时候才会输出值,一个一个的输出
#print(L_1)
##可以用next()来输出generator的值##
#print(next(L_1))
#print(next(L_1))
##用for循环输出generator的值##
for x in L_1:
print(x)
##菲拉波契数列的实现###
##原本的实现方法##
def fib(max):
n,a,b=0,0,1
while n<max:
print(b)
a,b=b,a+b ##这句话的意思:a=b;b=a+b;或者:t=(b,a+b);a=t[0];b=t[1]
n=n+1
return 'done'
m=int(input('a number:'))
fib(m)
###利用yield()可以把循环函数变成generator##
def fib_1(min):
n,a,b=0,0,1
while n<min:
yield b
a,b=b,a+b
n=n+1
return 'done'
mi=int(input('new a number:'))
k=fib_1(mi)
#for x in k:
# print(x)
捕捉错误信息
while True:
try:
x=next(k)
print('fib:',x)
except StopIteration as e:
print('Generator return value:',e.value)
break