有没有办法获得多个列表python的索引?

时间:2014-11-08 05:51:06

标签: python loops for-loop python-3.x indexing

感谢您查看我的问题。

我想知道像我这样的人如何在for循环中找到两个单独列表的索引,我知道你可以使用enumerate使用1个列表,并且你可以通过zip方法查看多个元素,但有没有办法获得2个或更多单独的索引,每个索引属于一个单独的列表。

例如

列表1的Index1

列表2的索引2

理想情况下,我希望在单个for循环中发生这种情况。

P.S对整个编程来说还是一个新手,所以我只能掌握循环,对象,数据结构等基本概念,所以没有技术;)

1 个答案:

答案 0 :(得分:0)

如果我找对了你,你不是在寻找将两个列表压缩在一起但是要做一些事情,比如将a的每个元素映射到b的每个元素?就像两套笛卡尔积?

所以对于两个列表:

a = ['1', '2', '3']
b = ['ba', 'bb']

你可以使用list comprehensions为这样的每个元素迭代它们:

[(x,y) for x in a for y in b]

这会生成以下输出:

1 ba
1 bb
2 ba
2 bb
3 ba
3 bb

有关列表推导的更多信息,请查看:PythonDocs - List Comprehension

您可以使用嵌套for循环获得相同的结果:

for x in a:
    for y in b:
        print(x + " " + y)

除此之外,cartesion产品还附带了itertools:

import itertools
for x,y in itertools.product(a,b):
    print(x + " " + y)

这也会生成与嵌套for循环或列表推导相同的输出。

修改

关于你的评论(我认为你不想要拉链?)izip例如正是你想要的。

输入:

a = ['1', '2', '3']
b = ['ba', 'bb']

像这样的izip:

import itertools
for x,y in itertools.izip(a,b):
    print(x + " " + y)

会生成以下输出:

1 ba
2 bb