如果我有一个单词列表,例如
words = ['apple', 'boat', 'cat']
我还有一个数字列表,例如
num = [1, 2, 0]
有没有办法根据第二个列表中的数字对第一个列表进行排序?即'apple'
的索引为0
,因此它应该在列表的最后,'boat'
的索引为1
,因此它应该是第一个等等。
答案 0 :(得分:9)
words = ['apple','boat','cat']
num = [1,2,0]
print([words[current_index] for current_index in num])
<强>输出强>
['boat', 'cat', 'apple']
列表推导方法适用于Python 2.x和3.x。
虽然我会不推荐这个,但你可以更简洁地写这个
print(map(words.__getitem__, num))
同样的事情可以用Python 3.x编写,就像这样
print(list(map(words.__getitem__, num)))
答案 1 :(得分:2)
>>> words = ['apple','boat','cat']
>>> num = [1,2,0]
>>> import operator
>>> operator.itemgetter(*num)(words)
('boat', 'cat', 'apple')
答案 2 :(得分:1)
既然您知道索引不会在第二个列表中重复,并且您知道它们的长度相同,则可以创建for循环:
words_b = []
for n in num:
words_b.append(words[n])
words = words_b
但是,thefourtheye已经以更紧凑的方式做到了这一点。如果你不精通Python,那么这个可读性会更高一些。