为了账号安全,请及时绑定邮箱和手机立即绑定

使用理解得到两个值

使用理解得到两个值

拉丁的传说 2021-03-18 17:18:06
是否有可能使用理解来产生以下内容,我尝试获取两个值a,b等。但是我知道的唯一方法是通过索引,而当我这样做时,我会得到超出范围的字符串索引。path = ['a', 'b', 'c', 'd', 'e']--a, bb, cc, dd, e
查看完整描述

3 回答

?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

您可以zip在这里使用:


>>> lis =  ['a', 'b', 'c', 'd', 'e']

>>> for x,y in zip(lis,lis[1:]):

...     print x,y

...     

a b

b c

c d

d e


查看完整回答
反对 回复 2021-03-26
?
临摹微笑

TA贡献1982条经验 获得超2个赞

itertools成对配方适用于任何迭代


from itertools import tee, izip


def 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, y



a b

b c

c d

d e

>>> list(pairwise(path))

[('a', 'b'), ('b', 'c'), ('c', 'd'), ('d', 'e')]


查看完整回答
反对 回复 2021-03-26
?
富国沪深

TA贡献1790条经验 获得超9个赞

实现此目的的最佳方法不是通过列表理解,而是zip()

advanced = iter(path)next(advanced, None)for item, next_item in zip(path, advanced):
    ...

我们在这些值上生成一个迭代器,将其前进一个值,因此我们从第二个值开始,然后使用循环遍历原始列表和高级列表zip()


查看完整回答
反对 回复 2021-03-26
  • 3 回答
  • 0 关注
  • 189 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号