以pythonic方式比较列表项

以pythonic方式比较列表项,python,python-3.x,Python,Python 3.x,对于一个列表比如说l=[1,2,3,4]我如何以pythonic的方式比较l[0]

对于一个
列表
比如说
l=[1,2,3,4]
我如何以pythonic的方式比较
l[0]

有一个通用的方法,就是用一个偏移量压缩列表本身

在这种情况下,您可以将其总结为一个列表:

[a < b for a, b in zip(l[:-1], l[1:])]
# [l[0] < l[1], l[1] < l[2], ...]
但是,您不需要构建实际的列表,一个生成器就足够了:

all(a < b for a, b in zip(l[:-1], l[1:]))
all(a
请注意,方括号
[]
被删除:理解的元素将被延迟评估,这将避免创建无用的列表

此解决方案具有
O(n)
复杂性:使用
zip
l
上迭代两次,然后使用
all
在压缩值上迭代一次

另一方面,
l==sorted(l)
看起来既聪明又优雅,但你必须支付
O(n*log(n))
排序成本
l
。 如果您的目标是排序
l
,如果未排序,则直接调用
l.sort()

试试以下方法:

比较=[l[i]
这个怎么办:

l == sorted(l)

你可以这样做

all(l[x]<l[x+1] for x in range(len(l)-1))

all(l[x]另一种方法是使用.sort()方法,在这种情况下,您必须返回一个新的列表。

U忘了按照OP的意图在它的周围放置结尾
btwAdd
all
。我还认为类似于
all([l[I]
谢谢,伙计。但是如果你只想检查
l
是否已排序,你就要支付
O(n*log(n))
在列表可能处于
O(n)
状态时排序列表的费用。这取决于l的大小,如果l<10k,你不应该担心。这真的很简单吗?看起来像蟒蛇。对我来说,len(l)总是小于5所以没有O(n*log(n))担心。谢谢。我不喜欢这个解决方案的语义。要么你想检查列表是否已排序,并使用正确的算法进行排序,要么你想对列表进行排序,并对其进行排序。如果l!=sorted(l):l.sort()
,你下一步要写什么
。欢迎访问SO。在回答之前,请阅读其他答案。@rusu_ro1Thank you已经回答了这个问题。很抱歉,刚刚加入(编程新手,~5个月)并试图了解这里的社区。是的,我在发布后看到了。
all(l[x]<l[x+1] for x in range(len(l)-1))