在循环期间如何修改列表条目?,一般建议是它可能是不安全的,所以除非您知道它是安全的,否则不要这样做。在第一个答案下的评论@martineau说:
IT[LOOP变量]没有副本。它只是将循环变量名称分配给 迭代的事物的连续元素或价值。这是我期望和想要的行为,但我没有得到它。我想从列表中的每个值中删除尾随的nulls。我的循环变量经过正确修改,但列表元素保持不变。
如何获得循环变量
fv
作为指向列表行的指针,而不是行的副本?
Extra信用:我的代码很糟糕,因此首选使用综合或切片而不是用于循环的解决方案。foo
foo = [
['a', 'b', None, None],
['c', None, 'e', None],
['f', None, None, None]
]
desired = [
['a', 'b'],
['c', None, 'e'],
['f']
]
for fv in foo:
for v in range(len(fv) -1, 0, -1):
if fv[v] == None:
fv = fv[:v]
print(f' {v:2} {fv}')
else:
break
print(foo)
使用
3 ['a', 'b', None]
2 ['a', 'b']
3 ['c', None, 'e']
3 ['f', None, None]
2 ['f', None]
1 ['f']
[['a', 'b', None, None], ['c', None, 'e', None], ['f', None, None, None]]
Process finished with exit code 0
循环考虑使用
for
来剥离不需要的值,直到没有离开: