是否可以在列表理解(Python 3.7)中设置默认优先值
array = [" " , node for node in set_nodes]
所以我的输出应该是
[' ', 0, 1, 2, 3]
我知道我只能说
[" "] + [node for node in set_nodes]
但是我想知道是否有更优雅的解决方案?
答案 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
很适合理解:-)