【发布时间】:2016-09-19 20:22:19
【问题描述】:
假设你有给定的功能:
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 是如何解释这些指令的。
【问题讨论】:
-
您应该在您的
last函数中添加一个print(word),以查看您为哪个词设置索引。这可能会消除一些混乱。 -
@Blued00d:那么您希望排序的结果是什么?您认为索引
(1,1,2,2,-1)会产生哪些字符供sorted()排序? -
@StefanPochmann 我相信 OP 指的是
sorted... -
@juanpa.arrivillaga 啊,对,
sorted是高阶。奇怪地调用一个流行的内置“这个高阶函数”。我认为他们指的是last,但是嗯,随便。 -
@StefanPochmann 我也拍了两遍。