list[0] 比 list[1] 大。所以它应该返回True,它返回False。我不明白为什么

我不明白为什么它返回 False,如果sequence[0]大于sequence[1]


sequence=[10, 1, 2, 3, 4, 5]


a=any(q for q in range(len(sequence)-1) if sequence[q]>=sequence[q+1])

print(a)

它适用于大于 0 的索引


largeQ
浏览 97回答 2
2回答

月关宝盒

你的问题是,对于这个列表,(q for q in range(len(sequence)-1) if sequence[q]>=sequence[q+1])is(0)和0is falsey。将实际索引放入任何类型的可迭代对象中是一种红鲱鱼 - 您可能没有意识到您实际上正在这样做。您要做的只是检查谓词sequence[q]>=sequence[q+1]对于 any是否为真q。所以改为这样做:any(sequence[q]>=sequence[q+1] for q in range(len(sequence)-1))这给出了一个可迭代的布尔值,并检查是否有True。

米琪卡哇伊

首先删除any()看看你的理解实际上给了你什么:[q for q in range(len(sequence)-1) if sequence[q]>=sequence[q+1]]>>> [0]也就是说,有一对数字的条件为真,并且它在原始列表中的索引 0 处。any([0])然后False是因为 0 是假的。any()检查每个项目以查看它是否为真。Robin 的解决方案是通常的做法,即使用比较结果作为屈服值。但是不产生错误值可能会快很多,如果您的序列足够长,您可能会注意到这一点,因此您可以使用以下形式:any(True for q in range(len(sequence)-1) if sequence[q]>=sequence[q+1])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python