Python 在列表表达式中使用枚举会产生意外结果
我在玩列表表达式。这项工作:Python 在列表表达式中使用枚举会产生意外结果,python,list,Python,List,我在玩列表表达式。这项工作: >> 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代表i,v在枚举(l[0:-1])中,如果v>打印(z) [1, 3, 4] 但这并不是: >> l = [1, 4, 3, 4, 5] >> z =
>> 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代表i,v在枚举(l[0:-1])中,如果v>打印(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]
>l=[1,4,3,4,5]
>>z=[v代表i,枚举中的v(l[1:-1]),如果vl[1:-1]更改
>>打印(z)
[]它应该打印[3,4]
它们看起来几乎一模一样——我遗漏了什么?在第二个表达式中删除如果v
将按预期返回子列表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]
>>[v代表i,v在枚举中(l[1:-1],1)如果v
enumerate()
每次从0
开始计数。您在开头将l
缩短了一个元素,但是i
计数器不是从1
开始的,它仍然从0
开始
传入一个起始值作为第二个参数:
>>> [v for i, v in enumerate(l[1:-1], 1) if v < l[i + 1]]
[3, 4]
>>[v代表i,v在枚举中(l[1:-1],1)如果v
哇,事后看来这很明显。哇,事后看来这很明显。