我有这样的数据:
[[1, 100313], [2, 100313], [1, 100314], [3, 100315]]
所有内容都是字符串格式(否则我无法迭代)
我想运行一个 for 循环,遍历这些元素并扩展 [0, 0, 1] 如果它看到列表中的第二个项目是 100313。所以最终它看起来像这样:
[[1, 100313, 0, 0, 1], [2, 100313, 0, 0, 1], [1, 100314], [3, 100315]]
我运行了一个如下所示的 for 循环:
for x, y in list:
if y == 100313:
list.extend([0,0,1])
而且它根本不会改变列表。这是为什么?
最佳答案
您可以使用 list comprehension
来做到这一点,就像这个例子:
a = [[1, 100313], [2, 100313], [1, 100314], [3, 100315]]
final = [k+[0,0,1] if k[1] == 100313 else k for k in a]
print(final)
输出:
[[1, 100313, 0, 0, 1], [2, 100313, 0, 0, 1], [1, 100314], [3, 100315]]
更新:
您要求在一个列表理解
中添加另一个if ... else
block 。你可以像这个例子那样做:
a = [[1, 100313], [2, 100313], [1, 100314], [3, 100315]]
final = [k+[0,0,1] if k[1] == 100313 else k+[0,1,0] if k[1] == 100314 else k for k in a]
print(final)
输出:
[[1, 100313, 0, 0, 1], [2, 100313, 0, 0, 1], [1, 100314, 0, 1, 0], [3, 100315]]
关于python - 我可以在 python 的列表列表中扩展吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41970843/