3
我不确定在以下比较函数中返回如何工作?为什么它能返回这样的格式?返回两个列表python?
def func(self, num):
num = sorted([str(x) for x in num], cmp=self.compare)
def compare(self, a, b):
return [1, -1][a + b > b + a]
我不确定在以下比较函数中返回如何工作?为什么它能返回这样的格式?返回两个列表python?
def func(self, num):
num = sorted([str(x) for x in num], cmp=self.compare)
def compare(self, a, b):
return [1, -1][a + b > b + a]
它没有返回两个列表。它返回第一个列表中的两个值之一。考虑这个改写:
def compare(self, a, b):
possible_results = [1, -1]
return possible_results[a + b > b + a]
它采取的是True
在Python被视为价值1
,并且False
被视为价值0
,并利用这些作为列表索引的事实。
布尔值False为零且布尔值为True为为1。它们都可以作为索引到一个列表:
# Normal indexing with integers
>>> ['guido', 'barry'][0]
'guido'
>>> ['guido', 'barry'][1]
'barry'
# Indexing with booleans
>>> ['guido', 'barry'][False]
'guido'
>>> ['guido', 'barry'][True]
'barry'
# Indexing with the boolean result of a test
>>> ['guido', 'barry'][5 > 10]
'guido'
>>> ['guido', 'barry'][5 < 10]
'barry'
希望,它使所有清楚:-)
看看这样说:-1,如果A + B> B + A否则1(如由答案覆盖 - 使用等同于1/True和0/False的数组索引)。 – greg