您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在Python中以列表形式(循环方式)遍历对

在Python中以列表形式(循环方式)遍历对

我已经编写了元组通用版本的代码,我喜欢第一个版本,因为它非常简洁,我看的越多,对我的感觉就越像Pythonic …毕竟,比带zip的衬里更像Pythonic ,星号参数扩展,列表推导,列表切片,列表串联和“范围”?

def ntuples(lst, n):
    return zip(*[lst[i:]+lst[:i] for i in range(n)])

即使对于大型列表,itertools版本也应足够高效…

from itertools import *
def ntuples(lst, n):
    return izip(*[chain(islice(lst,i,None), islice(lst,None,i)) for i in range(n)])

以及用于不可索引序列的版本:

from itertools import *
def ntuples(seq, n):
    iseq = iter(seq)
    curr = head = tuple(islice(iseq, n))
    for x in chain(iseq, head):
        yield curr
        curr = curr[1:] + (x,)

无论如何,谢谢大家的建议!:-)

python 2022/1/1 18:43:48 有434人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶