让我们说你有给定的功能:
def last(word):
return word[-1]
print (sorted(['apple','orange','banana','grape','watermelon'], key=last))
这将返回一个列表,该列表按每个字符串中的最后一个索引排序:
['banana', 'apple', 'orange', 'grape', 'watermelon']
所以现在有人可以解释当我们要求用户输入为我们传递给函数last
的每个字符串指定索引时会发生什么。例如,如果我们将代码更改为:
def last(word):
index = int(input('Enter index:'))
return word[index]
print (sorted(['apple','orange','banana','grape','watermelon'], key=last))
然后,如果用户输入以下序列(1,1,2,2,-1),则会产生列表:
['grape', 'banana', 'watermelon', 'apple', 'orange']
似乎没有按索引1,2或-1排序。
有谁可以解释幕后发生的事情以及Python如何处理这种情况?我理解这是一个非常奇怪的问题,但我想了解Python如何解释这些指令。
答案 0 :(得分:2)
排序完全正确。您要求按索引(1, 1, 2, 2, -1)
排序的单词。让我们来看看它们是什么字符:
>>> for index, word in zip((1, 1, 2, 2, -1), ['apple', 'orange', 'banana', 'grape', 'watermelon']):
... print(word[index], word)
...
p apple
r orange
n banana
a grape
n watermelon
因此,这些字母的正确排序顺序为('a', 'grape'), ('n', 'banana'), ('n', 'watermelon'), ('p', 'apple')
和('r', 'orange'
)(其中('n', 'banana')
和('n', 'watermelon')
按输入顺序保存,因为它们都在{ {1}})。这正是你得到的结果。