【问题标题】:How to append lists using list comprehension to an exsiting list如何使用列表推导将列表附加到现有列表
【发布时间】:2021-07-16 01:45:05
【问题描述】:

我想将列表解析生成的现有列表作为单独的列表附加项目。

source = [1,2,3,4,5]

我希望结果看起来像 [[2], [4]]

我已经尝试了以下(以及 '[]' 和 '()' 的其他疯狂组合但一无所获)...

target = []
target.append([r for r in source if r == 2 or r == 4])
print(target)
[[2, 4]]

target = []
target.append([[r] for r in source if r == 2 or r == 4])
print(target)
[[[2], [4]]]

target = []
target.append([r] for r in source if r == 2 or r == 4)
print(target)
[<generator object <genexpr> at 0x0000022F1986E4C8>]

【问题讨论】:

  • 使用带有.extend 的第二或第三版本而不是附加。列表推导式始终创建一个列表.append 将始终添加该单个列表

标签: python list list-comprehension


【解决方案1】:

您可以使用.extend() 代替.append()

source = [1, 2, 3, 4, 5]
target = []

target.extend([r] for r in source if r == 2 or r == 4)

print(target)
# [[2], [4]]

在这种情况下可以使用.extend(),因为它接收一个可迭代对象作为参数。

【讨论】:

  • 谢谢大家。我给这个答案打了勾,因为它清楚地表明了要做什么,但同样重要的是它说明了原因。
【解决方案2】:

只需使用extend 进行此列表理解:

target.extend([[r] for r in source if r in [2, 4]])

现在target 将是:

[[2], [4]]

【讨论】:

    【解决方案3】:

    您可以改用list.extend 方法:

    target.extend([r] for r in source if r == 2 or r == 4)
    

    【讨论】:

      【解决方案4】:

      .extend代替.append()

      source = [1,2,3,4,5]
      target=[]
      target.extend([t] for t in source if t==2 or t==4)
      print(target)
      

      【讨论】:

        【解决方案5】:

        就这样做

        source = [1,2,3,4,5]
        target = [[r] for r in source if r==2 or r==4]
        print(target)
        # output: [[2], [4]]
        

        如果目标列表不为空并且你想追加新值,你可以试试这个

        source = [1,2,3,4,5]
        target = [[7],[8]]
        target.extend([[r] for r in source if r==2 or r==4])
        print(target)
        # output: [[7], [8], [2], [4]]
        

        source = [1,2,3,4,5]
        target = [[7],[8]]
        target += [[r] for r in source if r==2 or r==4]
        print(target)
        # output: [[7], [8], [2], [4]]
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-07-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-08-01
          相关资源
          最近更新 更多