这可能是一个基本问题,但我甚至不确定如何正确地制定它。
我有两个清单:
>>> indexes
array([0, 2, 3, ..., 8, 5, 7]) # choices are between 0 and 8
>>> colors
['red', 'green', 'blue', 'orange', 'black', 'purple', 'yellow', 'grey', 'magenta']
我想做一些比这更简洁,更pythonic的事情:
color_labels = []
for i in range(len(indexes)):
color_labels.append(colors[indexes[i]])
答案 0 :(得分:5)
尝试:
color_labels = [colors[i] for i in indexes]
你可以通过理解做其他很酷的事情!如果您使用parens ()
而不是方括号,则会得到generator expression,这类似于列表推导,但它会被懒惰地评估。如果你使用花括号{}
和冒号:
,你会得到一个dictionary comprehension,它可以让你快速将元组列表等转换成字典。
答案 1 :(得分:2)
由于您的某个列表已经是numpy
数组,因此您可以使用numpy's
花式索引
color_labels = np.array(colors)[indexes]
答案 2 :(得分:0)
答案 3 :(得分:0)
或lambda
:
print map(lambda x: colors[x], indexes)