Die*_*len 4 python nested-lists
我有一个给定格式的列表:
[['John', 'Smith'], ['Linus', 'Torvalds'], ['Bart', 'Simpson']]
Run Code Online (Sandbox Code Playgroud)
列表中有一些这样的元素['Linus Torvalds',''],我想删除它们.那么为什么以下代码不能删除它们呢?
for i in people:
if(i[0] == '' or i[1] == ''):
print people.pop(people.index(i))
Run Code Online (Sandbox Code Playgroud)
650*_*502 10
您正在迭代它时更改列表,这是您的问题的根源.一种有效的方法是
people[:] = [p for p in people if p[0] != '' and p[1] != '']
Run Code Online (Sandbox Code Playgroud)
这样就构建了一个只包含所需元素的新临时列表,然后在操作完成时将其分配给原始列表对象.