程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

在列表中一次迭代两个项目的方法?

发布于2019-10-14 21:16     阅读(684)     评论(0)     点赞(4)     收藏(3)


我想知道是否有更好的方法一次遍历列表中的两个项目。我经常使用Maya,并且其中一个命令(listConnections)返回交替值列表。该列表看起来像[connectionDestination,connectionSource,connectionDestination,connectionSource]。要对该列表执行任何操作,理想情况下,我想执行以下操作:

for destination, source in cmds.listConnections():
    print source, destination

当然,您可以使用[:: 2]迭代列表中的所有其他项目,枚举和源将为index + 1,但是随后您必须为奇数列表和其他内容添加额外的检查。

到目前为止,我想到的最接近的是:

from itertools import izip
connections = cmds.listConnections()
for destination, source in izip(connections[::2], connections[1::2]):
    print source, destination

这不是超级重要,因为我已经有做自己想要的方法。这似乎是应该有一种更好的方法来做的事情之一。


解决方案


您可以使用以下方法对可迭代项进行分组,该方法取自以下文档的文档zip()

connections = cmds.listConnections()
for destination, source in zip(*[iter(connections)]*2):
    print source, destination

或者,对于更具可读性的版本,请使用itertools文档中石斑鱼配方

def grouper(n, iterable, fillvalue=None):
    "Collect data into fixed-length chunks or blocks"
    # grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx"
    args = [iter(iterable)] * n
    return izip_longest(fillvalue=fillvalue, *args)


所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:https://www.pythonheidong.com/blog/article/136843/83a43e8da5d64ad78f23/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

4 0
收藏该文
已收藏

评论内容:(最多支持255个字符)