|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
在看下面代码的时候,小甲鱼特别强调要先复制列表,但我感觉没有差别,删除列表中的元素后,复制版里的元素也少了,有谁可以举个例子,解释一下吗?
- pos = turtle.move()
- # 在迭代器中删除列表元素是非常危险的,经常会出现意想不到的问题,因为迭代器是直接引用列表的数据进行引用
- # 这里我们把列表拷贝给迭代器,然后对原列表进行删除操作就不会有问题了^_^
- for each_fish in fish[:]:
- if each_fish.move() == pos:
- # 鱼儿被吃掉了
- turtle.eat()
- fish.remove(each_fish)
- print("有一条鱼儿被吃掉了...")
复制代码
l = [1,2,3]
print("复制:")
for i in l[:]:
print(i)
l.remove(i)
print("不复制:")
ls = [1,2,3]
for i in ls:
print(i)
ls.remove(i)
运行一下看看,对比区别啊,,先复制列表(就是切片操作),这样可以每个都遍历,若用原列表的话,元素会缺失,这是最明显的一个问题,当然还会出现别的问题,总之很危险的行为
|
|