检查列表理解中的下一个元素

car*_*mom 0 python list-comprehension python-3.x

您可以根据如下条件将元素单独留在列表理解中:

>>> mylist = [6,7,3,9,2,7,4]
>>> [x-1 if x!=7 else x for x in mylist]
[5, 7, 2, 8, 1, 7, 3]
Run Code Online (Sandbox Code Playgroud)

然而,我需要的是,如果元素是 7 之后的元素,则该元素被单独留下。

[x-1 if next_element!=7 else x for x in mylist]
Run Code Online (Sandbox Code Playgroud)

期望的输出是:

[6,6,2,8,2,6,3]
Run Code Online (Sandbox Code Playgroud)

我认为这可能通过 enumerate 和索引实现,但无法解决。有任何想法吗?

r.o*_*ook 5

enumerate并且index是一种方式,但您可以通过以下方式实现zip

mylist = [6,7,3,9,2,7,4]
[x[0]-(x[1]!=7) for x in zip(mylist, mylist[1:] + [0])]

# [6, 6, 2, 8, 2, 6, 3]
Run Code Online (Sandbox Code Playgroud)