我正在使用列表推导为对象赋值。简而言之,我有两个清单。一个包含一组值,另一个包含一组索引(来自前一个列表)
values = [1.4,1.5,1.6,1.8]
indices = [0,1]
a.newvalues = [values[i] for i in indices]
索引不为空时,此方法正常。但是,当indices为空时,我希望将一个任意值(-1)分配给newvalues
,而不是返回一个空列表。
有人能想到办法吗?
答案 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]