列表理解-默认第一个值

时间:2019-06-17 09:12:00

标签: python python-3.x

是否可以在列表理解(Python 3.7)中设置默认优先值

array = [" " , node for node in set_nodes]

所以我的输出应该是

[' ', 0, 1, 2, 3]

我知道我只能说

[" "] + [node for node in set_nodes]

但是我想知道是否有更优雅的解决方案?

3 个答案:

答案 0 :(得分:3)

只需将原始列表解压缩到一个新列表中,并将第一个元素作为默认元素

set_nodes = [0, 1, 2, 3]
default = ' '
array = [default, *set_nodes]
print(array)

输出将为

[' ', 0, 1, 2, 3]

另一个选择是通过切片将元素添加到原始列表的第一个元素之前。这里的一个好处是您可以更改slice参数以插入默认值列表

set_nodes[:0] = default

答案 1 :(得分:1)

您只需插入元素:

set_nodes = [0, 1, 2, 3]
set_nodes.insert(0, " ")
print (set_nodes)

输出:

[' ', 0, 1, 2, 3]

答案 2 :(得分:1)

另一种可能的方法是使用itertools链:

from itertools import chain 
a = [1, 2, 3]
[i for i in chain(['any_default_value', 'multi?', 'no problem'], a)]  
# ['any_default_value', 'multi?', 'no problem', 1, 2, 3]

当您想执行包含if条件的理解时,我认为这特别有用。

看起来chain很适合理解:-)