即使单个项在解释器中显示为等效项,Python评估也会返回False

Ver*_*int 2 python boolean return

为什么这不起作用?

def straight(ranks):
    "Return True if the ordered ranks form a 5-card straight."
    return range(max(ranks)-4, max(ranks)+1) == ranks.sort()
Run Code Online (Sandbox Code Playgroud)

假设排名是:

>>> ranks = [9, 8, 7, 6, 5]
>>> range(max(ranks)-4, max(ranks)+1)
[5, 6, 7, 8, 9]
>>> ranks.sort()
[5, 6, 7, 8, 9]
Run Code Online (Sandbox Code Playgroud)

那么为什么:

>>> range(max(s)-4,max(s)+1) == s.sort()
False
Run Code Online (Sandbox Code Playgroud)

Amb*_*ber 9

s.sort()返回,None因为它对列表进行了排序.使用sorted(s).

>>> s = [1,3,2]
>>> repr(s.sort())
'None'
>>> repr(s)
'[1, 2, 3]'
>>> repr(sorted(s))
'[1, 2, 3]'
Run Code Online (Sandbox Code Playgroud)

  • @Verbal_Kint:因为如果你只是想以相反的顺序迭代列表,它比创建一个全新的列表更快并且使用更少的内存. (2认同)
  • @Verbal_Kint:是的,确切地说. (2认同)