列表理解 - 如果列表为空,则填充任意值

时间:2016-04-20 12:26:03

标签: python list list-comprehension

我正在使用列表推导为对象赋值。简而言之,我有两个清单。一个包含一组值,另一个包含一组索引(来自前一个列表)

values = [1.4,1.5,1.6,1.8]
indices = [0,1]
a.newvalues = [values[i] for i in indices]

索引不为空时,此方法正常。但是,当indices为空时,我希望将一个任意值(-1)分配给newvalues,而不是返回一个空列表。

有人能想到办法吗?

3 个答案:

答案 0 :(得分:9)

喜欢这个吗?

values = [1.4,1.5,1.6,1.8]
indices = [0,1]
a.newvalues = [values[i] for i in indices] if indices else [-1]

我不确定我会效仿。当索引为空时,a.newvalues应取值-1,而不是某个长度的列表?

答案 1 :(得分:1)

您只需检查索引长度:

if len(indices):
    a.values = [values[i] for i in indices]
else:
    a.values = -1

答案 2 :(得分:1)

我想添加lambda样式

sorted(map(lambda x: values[x], indices)) if indices else [-1]