2014-11-08 93 views
-1

感谢您检查我的问题。有没有办法获得多个列表python的索引?

我想知道如何可以找到一个for循环内的两个单独的列表的索引,我知道你可以使用枚举来做到这一点,并且你可以通过zip来通过多个元素方法,但有没有办法获得2个或更多的单独索引,每个索引都属于一个单独的列表。

为列表1

索引2 e.g

指数1为列表2

理想化我想这是在一个单一的发生for循环。

PS还是很新的节目作为一个整体,所以我只能把握如循环,对象,数据结构等基本概念,所以没有什么技术;)

+0

什么是您预期的输出? – 2014-11-08 05:57:08

+0

嗨Ashwini,我会在Q中以斜体显示!:) – 2014-11-08 06:01:41

+0

目前我还不清楚你到底想要什么,但我猜你需要做的是将'index + 1'改为'index * 2 + 1'。 – 2014-11-08 06:08:46

回答

0

如果我有你的权利,你不搜索用于将两个列表压缩在一起,但是做一些像a的每个元素映射到b的每个元素的东西?像两套笛卡尔产品一样?

因此,对于两个列表:

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

你可以重复他们两个像这样通过遍历的每一个元素:

[(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) 

除此之外,在笛卡尔产品均自带迭代工具:

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 
+0

感觉自由(不要忘记^^)如果事情还不清楚,就可以要求额外的东西......或投票并接受答案,如果一切正常(: – daniel451 2014-11-08 07:22:43

+0

正是我在找的东西,你撞到了脑袋! !! – 2014-11-09 00:51:44

+0

好吧不喜欢真的,你需要知道,这几乎是最好的答案,真的可以存在,羞耻我不能+1你 – 2014-11-09 01:02:26

相关问题