【问题标题】:Combine a simple value with a list将简单值与列表组合
【发布时间】:2020-05-06 18:06:00
【问题描述】:

[添加到简短的 python 列表的惯用语法是什么? 是关于修改现有列表,并且不包含此问题的合适答案。虽然可以在一个答案中找到解决方案,但它并不是最好的。]

有没有一种简单的方法可以将简单的值和/或列表的元素组合成一个平面列表?

例如,给定

lst = [ 5, 6, 7 ]
x = 4

有没有简单的制作方法

result = [ 4, 5, 6, 7 ]

以下内容令人满意,但我确信有一种更简洁的方法:

result = [ x ]
result.extend(lst)

Perl:

my @array = ( 5, 6, 7 );
my $x = 4;
my @result = ( $x, @array );

JavaScript (ES6):

let array = [ 5, 6, 7 ];
let x = 4;
let result = [ x, ...list ];

【问题讨论】:

  • y = [x] + list
  • 最接近 Python 中 Perl 和 Javascript 语法的类似物是 result = [x, *lst],其中 lst 是另一个列表。
  • 评论不用于扩展讨论;关于这个问题是否重复的元对话是archived in chat

标签: python python-3.x


【解决方案1】:

确实,您有 + 运算符来连接列表

[x] + [ 5, 6, 7 ]
# [4, 5, 6, 7]

你也可以使用可迭代解包操作符:

l = [ 5, 6, 7 ]

[x, *l]
[4, 5, 6, 7]

或者你也可以使用list.insert:

l.insert(0, x) 

print(l)
[4, 5, 6, 7]

【讨论】:

    【解决方案2】:

    您可以使用连接两个列表(或两个元组)。

    result = [x] + lst
    

    您可以在任意可迭代对象上使用可迭代解包运算符。

    result = [x, *lst]
    

    如果您有一个可迭代对象,您只想使其看起来扁平而不是实际扁平,您可以使用itertools.chain 创建一个可迭代生成器。

    import itertools
    result = itertools.chain([x], lst)
    

    如果您可以在现有列表之前添加而不是创建新列表,则可以在here 找到解决方案。

    【讨论】:

      猜你喜欢
      • 2021-07-04
      • 1970-01-01
      • 2019-02-10
      • 2011-04-21
      • 2013-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-21
      相关资源
      最近更新 更多