鱼C论坛

 找回密码
 立即注册
查看: 3043|回复: 6

关于python的list用法

[复制链接]
发表于 2016-3-9 19:51:33 | 显示全部楼层 |阅读模式
2鱼币
假设我定义了一个列表(如图),本该清空列表,可是为什么会这样显示呢?
2016-03-09 19-51-14屏幕截图.png

最佳答案

查看完整内容

for each in list1:是一次便利list1的每个元素,但这里list1却在不断的改变。 第一次循环each='a' 关键是这里!第二次循环,'b'变成了第一个元素了,而each取list1的第二次元素, each ='c','b'逃过了被删除的命运,以此类推。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-3-9 19:51:34 | 显示全部楼层
for each in list1:是一次便利list1的每个元素,但这里list1却在不断的改变。
第一次循环each='a'
关键是这里!第二次循环,'b'变成了第一个元素了,而each取list1的第二次元素, each ='c','b'逃过了被删除的命运,以此类推。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-3-9 20:46:47 | 显示全部楼层
冬雪雪冬 发表于 2016-3-9 20:40
for each in list1:是一次便利list1的每个元素,但这里list1却在不断的改变。
第一次循环each='a'
关键是 ...

但是
list1 = ['a', 'b', 'c', 'd', 'e', 'f']
for each in list1:
    print each
    list1 = []
print list1
的输出为
a
b
c
d
e
f
[]
按理说只会输出a的啊,这是为什么呢
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-3-9 21:00:09 | 显示全部楼层
python_02 发表于 2016-3-9 20:46
但是
list1 = ['a', 'b', 'c', 'd', 'e', 'f']
for each in list1:

我没有完全弄明白原因,与前一个例子的区别是这里用了赋值list1=[],使得list1变为了新的地址,而for循环可能还是照老地址找各个元素。我觉得这是个bug。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-3-9 21:05:50 | 显示全部楼层
如果将list1=[]改为
    for i in range(len(list1)):
        list1.pop()
即也达到清空的效果,则就向你说的,只打印a了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-3-14 17:06:05 | 显示全部楼层
可利用del实现删除:
list1 = ['a','b','c','d','e','f']
del list1[0:6]
print(list1)
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-6-7 20:56:35 | 显示全部楼层
到底是什么原因  难道真的是BUG?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-2-20 02:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表