python – 寻找一种优雅的方式,可以在两个不同长度的列表上同时
发布时间:2020-12-20 12:41:32 所属栏目:Python 来源:网络整理
导读:我正在寻找最优雅/短/ pythonic方式同时迭代两个不均匀的列表.如果较短的列表在某个时刻结束,它应该从头开始迭代. 到目前为止,我设法用while来做,我认为这是丑陋的,太长了(由于各种原因,我需要尽可能短的代码). list1 = ["a","b","c"]list2 = [1,2,3,4,5,6,7
我正在寻找最优雅/短/
pythonic方式同时迭代两个不均匀的列表.如果较短的列表在某个时刻结束,它应该从头开始迭代.
到目前为止,我设法用while来做,我认为这是丑陋的,太长了(由于各种原因,我需要尽可能短的代码). list1 = ["a","b","c"] list2 = [1,2,3,4,5,6,7,8,9,10] i1 = 0 i2 = 0 while True: if i2 == len(list2): break if i1 == len(list1): i1 = 0 print(list1[i1],list2[i2]) i1 += 1 i2 += 1 预期结果应如下所示.我用while循环(上面的代码)来实现它.但我需要尽可能短的代码: a 1 b 2 c 3 a 4 b 5 c 6 a 7 b 8 c 9 a 10 解决方法
压缩两个列表,将最短的列表输入到
itertools.cycle ,使其无限重复(直到list2结束):
import itertools list1 = ["a",10] for a,b in zip(itertools.cycle(list1),list2): print(a,b) 打印: a 1 b 2 c 3 a 4 b 5 c 6 a 7 b 8 c 9 a 10 (当然不要使用itertools.zip_longest作为循环永远不会结束,这将创建一个无限循环) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读