猿问

使用理解得到两个值

是否有可能使用理解来产生以下内容,我尝试获取两个值a,b等。但是我知道的唯一方法是通过索引,而当我这样做时,我会得到超出范围的字符串索引。


path = ['a', 'b', 'c', 'd', 'e']

--


a, b

b, c

c, d

d, e


拉丁的传说
浏览 184回答 3
3回答

慕桂英4014372

您可以zip在这里使用:>>> lis =  ['a', 'b', 'c', 'd', 'e']>>> for x,y in zip(lis,lis[1:]):...     print x,y...     a bb cc dd e

临摹微笑

itertools成对配方适用于任何迭代from itertools import tee, izipdef pairwise(iterable):    "s -> (s0,s1), (s1,s2), (s2, s3), ..."    a, b = tee(iterable)    next(b, None)    return izip(a, b)path = ['a', 'b', 'c', 'd', 'e']>>> for x, y in pairwise(path):    print x, ya bb cc dd e>>> list(pairwise(path))[('a', 'b'), ('b', 'c'), ('c', 'd'), ('d', 'e')]

富国沪深

实现此目的的最佳方法不是通过列表理解,而是zip():advanced = iter(path)next(advanced, None)for item, next_item in zip(path, advanced):     ...我们在这些值上生成一个迭代器,将其前进一个值,因此我们从第二个值开始,然后使用循环遍历原始列表和高级列表zip()。
随时随地看视频慕课网APP

相关分类

Python
我要回答