首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何按循环顺序访问两个列表中的项?

如何按循环顺序访问两个列表中的项?
EN

Stack Overflow用户
提问于 2016-10-05 04:45:22
回答 2查看 42关注 0票数 0

我有两份名单,

代码语言:javascript
复制
list_a = ['color-1', 'color-2', 'color-3', 'color-4']
list_b = ['car1', 'car2', 'car3', 'car4' ........... 'car1000']

我需要以list_a的循环顺序访问元素

代码语言:javascript
复制
['color-1']['car1']
['color-2']['car2']
['color-3']['car3']
['color-4']['car4']
['color-1']['car5']  #list_a is starting from color-1 once it reaches end
['color-2']['car6']  #... goes on until end of items in list_b

我试过了,不起作用。请给我建议。

代码语言:javascript
复制
start=0
i=0
for car_idx in xrange(start, end):
    if i <= len(color_names):
        try:
            self.design(color_names[i], self.cars[car_idx])
            i+=1
        except SomeException as exe:
            print 'caught an error'
EN

回答 2

Stack Overflow用户

发布于 2016-10-05 04:51:23

使用itertools.cyclelist_a之外进行循环迭代。使用zip将循环迭代器中的项与list_b中的项配对。当传递给zip的最短的迭代量(即list_b)结束时,zip返回的迭代量将停止。

代码语言:javascript
复制
import itertools as IT
list_a = ['color-1', 'color-2', 'color-3', 'color-4']
list_b = ['car1', 'car2', 'car3', 'car4', 'car5', 'car6', 'car1000']

for a, b in zip(IT.cycle(list_a), list_b):
    print(a, b)

打印

代码语言:javascript
复制
color-1 car1
color-2 car2
color-3 car3
color-4 car4
color-1 car5
color-2 car6
color-3 car1000
票数 6
EN

Stack Overflow用户

发布于 2016-10-05 04:50:40

使用模运算符%索引到适当的范围:

代码语言:javascript
复制
len_a = len(list_a)
len_b = len(list_b)
end = max(len_a, len_b)
for i in range(end):
    print(list_a[i % len_a], list_b[i % len_b])
    # ... do something else 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39861439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档