python - 我可以在 python 的列表列表中扩展吗?

标签 python list for-loop extend

我有这样的数据:

[[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/

相关文章:

python - 高效地将行添加到 pandas DataFrame

python - 如何检查对象列表中的重复属性并合并它们

java - 在 Java 中将计数器重置为零?

python - Django 管理员 : not seeing any app (permission problem? )

python - 查找 libproj.so.25 时出现问题

c# - List<string> 自定义排序

java - 为什么我的输出顺序看似随机( ActionScript 3.0)?

python - 如何在python中连接多个函数

python - 从单元格中检索完整的富文本数据(单元格内有多种字体颜色/样式)

javascript - 在 for 循环中逐步运行函数