我有一个名为row
列表:为什么下面的列表理解不能在Python中工作?
row = ['1234', [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31]]
我想改变row[1]
,这样几个数字得到了及时更换,其余被以字符串'ABS'
取代。事情是这样的:
['1234', ['ABS', 'ABS', 'ABS', 'ABS', 'ABS', 'ABS', 'ABS', '09:54:59', '09:55:18', 'ABS', 'ABS', 'ABS', 'ABS', 'ABS', 'ABS', 'ABS', 'ABS', 'ABS', 'ABS', 'ABS', 'ABS', 'ABS', 'ABS', 'ABS', 'ABS', 'ABS', 'ABS', 'ABS', 'ABS', 'ABS', 'ABS']]
这里是我的代码:
for obj in row_objs:
row[1] = [str(obj.punch.time()) if x==obj.punch.day else 'ABS' for x in row[1]]
但我不断收到全部由“ABS”与上面的代码替换的数字。
当我这样做:
for obj in row_objs:
row[1] = [str(obj.punch.time()) if x==obj.punch.day else x for x in row[1]]
的时间正确地放置,但其他数字仍然存在。
['1234', [1, 2, 3, 4, 5, 6, 7, '09:54:59', '09:55:18', 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31]]
这里怎么回事?
我可能没有足够的咖啡,但这里并不存在'row [1]'被'for'循环的每次迭代覆盖的问题,这样OP只会看到最后一个效果迭代? – timgeb
@timgeb这似乎是问题所在。他们刚刚更新了他们的问题。 –
@timgeb:以前评论过的那些'for'循环不在那里。他们期待每个“迭代”不会影响下一次迭代。 –