你可以在python中手动排序列表吗?

时间:2014-02-08 06:30:25

标签: python list sorting indexing

如果我有一个单词列表,例如

words = ['apple', 'boat', 'cat']

我还有一个数字列表,例如

num = [1, 2, 0]

有没有办法根据第二个列表中的数字对第一个列表进行排序?即'apple'的索引为0,因此它应该在列表的最后,'boat'的索引为1,因此它应该是第一个等等。

3 个答案:

答案 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)

使用operator.itemgetter

>>> 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,那么这个可读性会更高一些。