切片|迭代|列表生成式|生成器|迭代器。
#!/usr/bin/python3
# -*- coding: utf-8 -*-
print("切片-------------")
#就像切面包一样,你想取列表或tuple的第n-m个元素是,就可以使用切片(slice)
a=['aaa','bbb','ccc','ddd']
print(a)
print(a[:3])
print(a[1:3])
print(a[-2:]) #取最后两个元素
print(a[-3:-1]) #倒数第三个到倒数第二个(总2个元素)
L=list(range(30))
print(L)
print(L[:10:2]) #前10个数,每隔两个取一个
print(L[:]) #什么都不写可以原样复制一个list
# tuple和字符串也可以使用切片操作
print((0,1,2,3,4,5,6)[:3])
print("abcdefg"[::2])
print("利用切片,实现trim()-------------")
def trim(s):
if len(s)==0:
return s
if s[0]==' ':
return trim(s[1:])
if s[-1]==' ':
return trim(s[:-1])
else:
return s
#test
if trim('hello ') != 'hello':
print('测试失败!')
elif trim(' hello') != 'hello':
print('测试失败!')
elif trim(' hello ') != 'hello':
print('测试失败!')
elif trim(' hello world ') != 'hello world':
print('测试失败!')
elif trim('') != '':
print('测试失败!')
elif trim(' ') != '':
print('测试失败!')
else:
print('测试成功!')
print("判断是否可以迭代-------------")
from collections import Iterable
print(isinstance('abcd',Iterable))
print(isinstance([1,2,3,4],Iterable))
print(isinstance((1,2,3,4),Iterable))
print("enumerate实现下标循环-------------")
for i,value in enumerate([1,2,3,4]):
print(i,value)
print("使用两个变量迭代-------------")
for x,y in ((1,1),(2,2),(3,3)):
print(x,y)
print("列表生成式-------------")
#顾名思义,用来生成列表的式子
print([x*x for x in range(1,11)])
print([x * x for x in range(1,11) if x%2 == 0])
#两层循环生成全排列
print([m+n for m in'abc' for n in 'xyz'])
#用列表生成式列出当前目录所有文件
import os
print([d for d in os.listdir('.')])
#列表生成式将字符串转小写
L=['Hello','World','IBM','Apple']
print([s.lower() for s in L])
#practice
L1 = ['Hello', 'World', 18, 'Apple', None]
L2 = [s.lower() for s in L1 if isinstance(s, str)]
print(L1)
print(L2)
if L2 == ['hello', 'world', 'apple']:
print('测试通过!')
else:
print('测试失败!')
print("生成器-------------")
g=(x*x for x in range(10))
print('next(g):')
next(g)
next(g)
next(g)
#fib
print('斐波那契数列')
def fib(max):
n,a,b = 0,0,1
while n<max:
yield b #把函数变为generator
a,b=b,a+b
n=n+1
return 'done'
f=fib(9)
#用for循环遍历生成器,不用自己捕获异常
for x in f:
print(x)
#自己用next遍历,需要捕获异常
while True:
try:
x=next(f)
print('g:',x)
except StopIteration as e:
print('Generator return value:',e.value)
break
#杨辉三角
def triangles():
l=[1]
while True:
yield l
l=[0]+l+[0]
l=[l[i]+l[i+1] for i in range(len(l)-1)]
t=triangles()
for i in range(7):
print(next(t))
#迭代器 可迭代的
from collections import Iterator
from collections import Iterable
print(isinstance([],Iterator))
print(isinstance([],Iterable))
欢迎与我分享你的看法。 转载请注明出处:http://taowusheng.cn/