3lo*_*okh 2 python list python-3.x
我正在使用python 3.4并且只是学习基础知识,所以请耐心等待..
listA = [1,2]
for a in listA:
listA.remove(a)
print(listA)
Run Code Online (Sandbox Code Playgroud)
假设我得到一个空列表,但我得到的是一个值为'2'的列表.我用大号调试代码.列表中的值以及列表具有单个元素时for循环退出.为什么最后一个元素没有从列表中删除..?
迭代时不应更改列表.删除项目时,列表的索引会发生变化,因此永远不会评估某些项目.改为使用列表推导,它会创建一个新列表:
[a for a in list if ...]
Run Code Online (Sandbox Code Playgroud)
换句话说,尝试这样的事情:
>>> A = [1, 2, 3, 4]
>>> A = [a for a in A if a < 4] # creates new list and evaluates each element of old
>>> A
[1, 2, 3]
Run Code Online (Sandbox Code Playgroud)
使用for循环时,使用内部计数器.如果在迭代时将剩余元素向左移动list,则list不会评估剩余元素中剩余的元素.请参阅声明的注释for.
| 归档时间: |
|
| 查看次数: |
3407 次 |
| 最近记录: |