| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
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)
 
运行一下看看,对比区别啊,,先复制列表(就是切片操作),这样可以每个都遍历,若用原列表的话,元素会缺失,这是最明显的一个问题,当然还会出现别的问题,总之很危险的行为  
 
 
 |   
 
 
 
 |