可以在Python列表理解中访问当前项和下一项的值吗?

时间:2014-09-03 15:30:34

标签: python loops list-comprehension

让我们说我想建立一个给定列表中的元组列表。有没有办法用列表理解来做到这一点,还是我需要求助于for循环?

[a,b,c,d,e] => [(a,b),(b,c),(c,d),(d,e)]

2 个答案:

答案 0 :(得分:2)

你可以这样做:

>>> l = ['a','b','c','d','e']
>>> [(l[i],l[i+1]) for i in range(len(l)-1)]
[('a', 'b'), ('b', 'c'), ('c', 'd'), ('d', 'e')]

带zip:

>>> zip(l,l[1:])
[('a', 'b'), ('b', 'c'), ('c', 'd'), ('d', 'e')]

- 根据评论编辑

答案 1 :(得分:0)

不直接,但给定循环索引很容易,例如:

l='''a,b,c,d,e'''.split(',')
[(l[x],l[x+1]) for x in range(len(l)-1)]

输出:

[('a', 'b'), ('b', 'c'), ('c', 'd'), ('d', 'e')]
编辑:看起来我们几个人同时提出了这个相同的解决方案......