python中for循环和len函数的使用
2018-07-13 本文已影响0人
icessun
dinnersPerson = ['icessun', 'Bob', 'Ben', 'alex','rose','jack','flank']
def sorryName():
for item in dinnersPerson:
if(len(dinnersPerson) > 2):
print('Sorry!!!'+dinnersPerson.pop()+',由于台风的原因,不能邀请你')
sorryName()
print(len(dinnersPerson)) # 3
print(dinnersPerson) # ['icessun', 'Bob', 'Ben']
当看到这段代码的时候,你是不是觉得应该最后执行的结果列表的长度是2
,列表最后只剩下['icessun', 'Bob']
其实一开始我也是这么想的,后来调试了一下,发现想当然的一些认为是错误的:每次pop
之后,for循环
又从头开始执行了。这个想法是错误的。
启动了for循环
,那么就会按照列表的顺序依次往下执行,for
从列表的前面走,pop
从列表的后面走,列表的长度是固定的。循环完毕,尽管条件语句还成立,但是也执行完毕了;所以才出现与我们不期待的结果。
修改方法:
def sorryName():
while(len(dinnersPerson) > 2):
print('Sorry!!!'+dinnersPerson.pop()+',由于台风的原因,不能邀请你')