【问题标题】:Python: Appending a list by other listsPython:通过其他列表附加列表
【发布时间】:2022-01-03 21:19:38
【问题描述】:

我想将列表“b”、“c”和“d”附加到我的列表“a”中。然后我想在每一行打印单个列表。我的预期输出是:

[(4, 'Blue'), (3, 'Red'), (4, 'Red')]
[(2, 'Green'), (4, 'Green'), (1, 'Yellow')]
[(1, 'Green'), (3, 'Blue'), (3, 'Green')]
[(2, 'Blue'), (1, 'Red'), (4, 'Yellow')]

我当前的代码是:

a = [(4, 'Blue'), (3, 'Red'), (4, 'Red')]
b = [(2, 'Green'), (4, 'Green'), (1, 'Yellow')]
c = [(1, 'Green'), (3, 'Blue'), (3, 'Green')]
d = [(2, 'Blue'), (1, 'Red'), (4, 'Yellow')]

a.append(b)
a.append(c)
a.append(d)

for x in a:
    print(x)

我目前的输出是:

(4, 'Blue')
(3, 'Red')
(4, 'Red')
[(2, 'Green'), (4, 'Green'), (1, 'Yellow')]
[(1, 'Green'), (3, 'Blue'), (3, 'Green')]
[(2, 'Blue'), (1, 'Red'), (4, 'Yellow')]

如您所见,前 3 行输出是分开的,而不是在一起的。如何更改它以使其根据我的预期输出显示?

【问题讨论】:

  • 您想要列表列表还是元素列表?
  • 你可以使用a.extend([b, c, d])而不是追加3次。
  • 你不需要e = [a,b,c,d]吗?
  • 很抱歉最初的重复标记。我误读了您的预期输出。
  • 您根本不需要使用.append,正如@Sayse 指出的那样。但是您可以通过简单地了解发生的事情来轻松修复代码。想一想:为什么 a.append(b) 给你a 的初始元素,然后是b 作为单个元素?鉴于b 的附加会将正确的内容放入您的输出中,您能想出一种方法将a 正确放入您的输出中吗? (通过在某事上使用.append(a),对吗?)如果你要这样做,你需要有什么起点? (它必须是一个单独的东西,对吧,哪个是空的?是吗?)

标签: python list append


【解决方案1】:

您当前的代码将每个 b/c/d 列表添加为 元素。所以你有一个包含 6 个元素的列表,其中最后 3 个是列表。

[(4, 'Blue'),
 (3, 'Red'),
 (4, 'Red'),
 [(2, 'Green'), (4, 'Green'), (1, 'Yellow')],
 [(1, 'Green'), (3, 'Blue'), (3, 'Green')],
 [(2, 'Blue'), (1, 'Red'), (4, 'Yellow')]]

我认为您想要做的是使用更大的容器。 (为什么?我不知道,我猜这是更大代码的一个虚拟示例部分)。

a = [(4, 'Blue'), (3, 'Red'), (4, 'Red')]
b = [(2, 'Green'), (4, 'Green'), (1, 'Yellow')]
c = [(1, 'Green'), (3, 'Blue'), (3, 'Green')]
d = [(2, 'Blue'), (1, 'Red'), (4, 'Yellow')]

out = [a]
out.append(b)
out.append(c)
out.append(d)
# or out = [a,b,c,d]
# or out.extend([b,c,d])

for x in out:
    print(x)

输出:

[(4, 'Blue'), (3, 'Red'), (4, 'Red')]
[(2, 'Green'), (4, 'Green'), (1, 'Yellow')]
[(1, 'Green'), (3, 'Blue'), (3, 'Green')]
[(2, 'Blue'), (1, 'Red'), (4, 'Yellow')]

【讨论】:

    【解决方案2】:

    这里的问题是您将bcd 作为元素附加到a,这意味着a 的原始元素不像@ 那样嵌套在列表中987654326@、cd

    要先将a的元素打包成一个列表,我们可以在追加之前做a = [a]

    所以我们的代码现在变成了:

    a = [(4, 'Blue'), (3, 'Red'), (4, 'Red')]
    b = [(2, 'Green'), (4, 'Green'), (1, 'Yellow')]
    c = [(1, 'Green'), (3, 'Blue'), (3, 'Green')]
    d = [(2, 'Blue'), (1, 'Red'), (4, 'Yellow')]
    
    a = [a]
    a.append(b)
    a.append(c)
    a.append(d)
    
    for x in a:
        print(x)
    

    输出:

    (4, 'Blue'), (3, 'Red'), (4, 'Red')]
    [(2, 'Green'), (4, 'Green'), (1, 'Yellow')]
    [(1, 'Green'), (3, 'Blue'), (3, 'Green')]
    [(2, 'Blue'), (1, 'Red'), (4, 'Yellow')]
    

    【讨论】:

      【解决方案3】:

      我的预期输出应该是:

      [(4, 'Blue'), (3, 'Red'), (4, 'Red')]
      [(2, 'Green'), (4, 'Green'), (1, 'Yellow')]
      [(1, 'Green'), (3, 'Blue'), (3, 'Green')]
      [(2, 'Blue'), (1, 'Red'), (4, 'Yellow')]
      

      这不是一个有效的列表。这只是四个不同的列表。

      【讨论】:

      • Taramon 指的是for 循环生成的输出,而不是列表本身
      • 有效,操作正在打印列表
      • 输出来自遍历列表并printing 每个元素。显然 OP 的意思是结果数据应该是一个列表列表,但问题是它包含第一个列表中的一些元素与其他列表混合。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-26
      • 1970-01-01
      • 2018-04-19
      • 2020-11-21
      相关资源
      最近更新 更多