您能用python手动对列表排序吗?

您能用python手动对列表排序吗?,python,list,sorting,indexing,Python,List,Sorting,Indexing,如果我有一个单词列表,例如 words = ['apple', 'boat', 'cat'] 我还有一个数字列表,例如 num = [1, 2, 0] 有没有办法根据第二个列表中的数字对第一个列表进行排序?也就是说,'apple'的索引是0,所以它应该是列表中的最后一个,而'boat'的索引是1,所以它应该是第一个,以此类推 words = ['apple','boat','cat'] num = [1,2,0] print([words[current_index] for current

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

words = ['apple', 'boat', 'cat']
我还有一个数字列表,例如

num = [1, 2, 0]
有没有办法根据第二个列表中的数字对第一个列表进行排序?也就是说,
'apple'
的索引是
0
,所以它应该是列表中的最后一个,而
'boat'
的索引是
1
,所以它应该是第一个,以此类推

words = ['apple','boat','cat']
num = [1,2,0]
print([words[current_index] for current_index in num])
输出

['boat', 'cat', 'apple']
列表理解方法在Python2.x和3.x上都适用

虽然我不推荐这个,但你可以这样写得更简洁

print(map(words.__getitem__, num))
print(list(map(words.__getitem__, num)))
同样的事情也可以用Python3.x编写,如下所示

print(map(words.__getitem__, num))
print(list(map(words.__getitem__, num)))
输出

['boat', 'cat', 'apple']
列表理解方法在Python2.x和3.x上都适用

虽然我不推荐这个,但你可以这样写得更简洁

print(map(words.__getitem__, num))
print(list(map(words.__getitem__, num)))
同样的事情也可以用Python3.x编写,如下所示

print(map(words.__getitem__, num))
print(list(map(words.__getitem__, num)))
使用:

使用:


因为您知道索引不会在第二个列表中重复,并且您知道索引在第二个列表中的长度相同,所以可以创建for循环:

words_b = []
for n in num:
    words_b.append(words[n])
words = words_b

但第四天,你们已经用一种更紧凑的方式做到了这一点。如果您对Python不太熟悉,那么这个列表的可读性会稍微好一些。

因为您知道索引不会在第二个列表中重复,并且您知道它们在第二个列表中的长度相同,所以您可以创建for循环:

words_b = []
for n in num:
    words_b.append(words[n])
words = words_b

但第四天,你们已经用一种更紧凑的方式做到了这一点。如果您对Python不太精通,那么这篇文章的可读性会稍微好一点。

Ah!简单的列表理解:)哇,这比NumPy arg indexingAh还要快!简单的列表理解:)哇,这比NumPy arg索引速度还要快哇,有点小错误--修复了。哇,有点小错误--修复了。使用
itemgetter()
第三个答案非常有趣。为什么0是最后一个?第三个答案非常有趣,使用
itemgetter()
为什么0是最后一个?这是非常非编程的=)