[英]Using enumerate in a list expression gives unexpected result
我在玩列表表达式。 这有效:
>> l = [1, 4, 3, 4, 5]
>> z = [v for i, v in enumerate(l[0:-1]) if v < l[i + 1]]
>> print(z)
[1, 3, 4]
但这不是:
>> l = [1, 4, 3, 4, 5]
>> z = [v for i, v in enumerate(l[1:-1]) if v < l[i + 1]] # Changed from l[0:-1] -> l[1:-1]
>> print(z)
[] # It should print [3, 4]
它们看起来几乎相同-我想念什么? if v < l[i + 1]
在第二个表达式中if v < l[i + 1]
删除,则按预期返回子列表l[1:-1]
。
enumerate()
每次都从0
开始计数。 您在开始时将l
缩短了一个元素,但i
计数器不是从1
开始,而是从0
开始。
传入一个起始值作为第二个参数:
>>> [v for i, v in enumerate(l[1:-1], 1) if v < l[i + 1]]
[3, 4]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.