求助:关于列表 pop()方法的使用
代码如下:name = ['lili', 'lilian', 'lisa', 'rose']
name.insert(0, 'bob')
name.insert(4, 'summer')
name.append('apple')
print(name)
for each in name:
print(name.pop(), ', I am sorry')
运行结果如下:
['bob', 'lili', 'lilian', 'lisa', 'summer', 'rose', 'apple']
apple , I am sorry
rose , I am sorry
summer , I am sorry
lisa , I am sorry
['bob', 'lili', 'lilian']
疑惑:
为啥列表中 还保存三个元素不应该是全部删除了吗????? for each in name遍历时有惰性
改成for each in name[:] name = ['lili', 'lilian', 'lisa', 'rose']
name.insert(0, 'bob')
name.insert(4, 'summer')
name.append('apple')
print(name)
for each in range(len(name)):
print(name.pop(), ', I am sorry')
我觉得你是想做到这个效果吧
你 for 循环过程中,name 列表被循环时,内部的元素被移除
而 for 循环的索引值不会改变,依旧照就循环的索引直到 for 循环 name 列表索引超出 name 列表长度,则退出循环
这也就导致循环过程中,有些元素因元素进出而改变的索引值而未被 for 循环遍历到
['bob', 'lili', 'lilian', 'lisa', 'summer', 'rose', 'apple']
当for循环 循环到lisa 后,lisa 被删除,然后继续第五次循环时,pop()函数发现第五次循环没有找到删除的值,程序终止。 Twilight6 发表于 2021-6-1 18:58
你 for 循环过程中,name 列表被循环时,内部的元素被移除
而 for 循环的索引值不会改变,依旧照就循 ...
for each in name:
这句代码咋理解
我之前理解的是 遍历name 列表中的所有元素
但是现在感觉好像不是哎 happy_zl 发表于 2021-6-2 11:35
for each in name:
这句代码咋理解
我之前理解的是 遍历name 列表中的所有元素
for 按照下标取出元素
比如若此时已经循环到第三个元素,那么此时索引下标为 2 (因为从 0 开始索引),下个循环时索引下标就为 3
此时若索引值未超过 可迭代对象总长度,那么循环会继续进行
而此时若你将索引为 0 元素删去,会导致列表中后续元素索引值都减 1,但你循环索引的下标还是为 3 所以导致 for 循环“漏了” 新索引值为 2 的元素 pop()函数不指定index是从-1开始的,就是从最后开始
name = ['lili', 'lilian', 'lisa', 'rose']
name.insert(0, 'bob')
name.insert(4, 'summer')
name.append('apple')
print(name)
# for each in range(len(name)):
# print(name.pop(), ', I am sorry')
print('+'*100)
for each in name:
print(each)
print(name.pop(), ', I am sorry')
print('被删除的name:',name)
print('-'*20)
print('+'*100)
代码运行结果:
['bob', 'lili', 'lilian', 'lisa', 'summer', 'rose', 'apple']
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
bob
apple , I am sorry
被删除的name: ['bob', 'lili', 'lilian', 'lisa', 'summer', 'rose']
--------------------
lili
rose , I am sorry
被删除的name: ['bob', 'lili', 'lilian', 'lisa', 'summer']
--------------------
lilian
summer , I am sorry
被删除的name: ['bob', 'lili', 'lilian', 'lisa']
--------------------
lisa
lisa , I am sorry
被删除的name: ['bob', 'lili', 'lilian']
--------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
吐槽下不能复制图片上传啊 pop()不是弹出并允许使用吗? pop()是默认删除最后一位的,然后你for是遍历当前列表的长度,前面下标在增加,你列表的长度又在变小,所以你遍历的不是一个完整的列表
页:
[1]