面试题

---恢复内容开始---

# 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]
'''
闭包延迟绑定,因为我在定义阶段我不去调用的话不会去进行传值,当我调用的时候我会去找离我最近的,这个时候才会进行绑定
'''

 

 

 

 

 

 

 

---恢复内容结束---

转载于:https://www.cnblogs.com/xinfan1/p/11215812.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值