---恢复内容开始---
# 1、下面代码的输出结果是什么?
list1 = ['a', 'b', 'c', 'd', 'e']
print(list1[10:]) # []
# 2、各行打印的结果应该是多少?
list1 = [ [ ] ] * 5 [[],[],[],[],[]]
list1[0].append(10)
print(list1) [[10], [10], [10], [10], [10]]
list1[1].append(20)
print(list1) [[10, 20], [10, 20], [10, 20], [10, 20], [10, 20]]
list1.append(30)
print(list1)[[10, 20], [10, 20], [10, 20], [10, 20], [10, 20], 30]
3、写一个函数:
查出字符串中每个单词的首字母在整个字符串的位置。把这些首字母的索引添加到result列表中,并返回给调用者。
names = 'Jack Eason Max'
答案:
1:def get_num(name):
result = []
result.append(0)
for index,val in enumerate(name):
if val == ' ':
result.append(index+1)
return result
print(get_num(names))
生成器:
def get_num(name):
yield 0
for index,val in enumerate(name):
if val == ' ':
yield index+1
res = get_num(names)
print(list(res))
文件操作
def func(f):
index = 0
for line in f:
if line:
yield index
for val in line:
index+=1
if val == ' ':
yield index+1
with open('test','r',encoding='utf-8') as f:
res = func(f)
print(list(res))
def add(n,i): return n+i def test(): for i in range(4): yield i g = test() #这个时候不是调用函数而是生成器初始化 for n in [1,10]: # 这是循环2次,第一次为1第二次为10 g = (add(n,i) for i in g) # 后面的g是前面的生成器对象,前面的只是一个变量 #第一次循环后长沙呢个的生成器对象g = (add(n,i) for i in test()) #第二次循环的时候就是再in 前面的生成器对象g = (add(n,i) for i in (add(n,i) for i in test()) ) # 但这2步我都不执行代码 res = list(g) print(res) # 这一步我才会去执行函数体代码,这个时候我的n将会找最近的就是10,所以我也只会执行第二次循环,这样结果就是[20,21,22,23] ''' 闭包延迟绑定,因为我在定义阶段我不去调用的话不会去进行传值,当我调用的时候我会去找离我最近的,这个时候才会进行绑定 '''
---恢复内容结束---