【问题标题】:is there a way to get the index for multiple lists python?有没有办法获取多个列表 python 的索引?
【发布时间】:2014-11-08 05:51:05
【问题描述】:

感谢您查看我的问题。

我想知道像我这样的人如何从 for 循环中找到两个单独列表的索引,我知道您可以使用 enumerate 对 1 个列表进行定位,并且您可以通过 zip 方法遍历多个元素,但是有没有办法获得 2 个或多个单独的索引,每个索引都属于一个单独的列表。

例如

列表 1 的索引 1

列表 2 的索引 2

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

P.S 作为一个整体,我对编程还是很陌生,所以我只能掌握循环、对象、数据结构等基本概念,所以对技术没有任何了解;)

【问题讨论】:

  • 你的预期输出是什么?
  • 嘿 Ashwini,我会在 Q 中以斜体字发帖! :)
  • 我还不清楚你到底想要什么,但我想你需要在这里做的是将index+1更改为index*2+1
  • 嘿Ashwini,Q的细节真的无关紧要,实际上我想简单的Q,我认为应该是。
  • 你能告诉我们一些输入和预期输出吗???

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


【解决方案1】:

如果我没听错的话,你不是在搜索将两个列表压缩在一起,而是在做一些事情,比如将 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)

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

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

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

编辑:

关于您的评论(我以为您不想要 zip?) 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

【讨论】:

  • 如果还有什么不清楚的地方,请随意(不要忘记^^)询问其他问题......或者如果一切正常,请投票并接受答案(:
  • 好吧,不,真的,你需要知道这几乎是可能存在的最佳答案,可惜我不能 +1 你
猜你喜欢
  • 2014-05-01
  • 2012-05-31
  • 2020-12-27
  • 2022-01-21
  • 1970-01-01
  • 2021-12-09
  • 2020-01-29
  • 1970-01-01
  • 2019-10-04
相关资源
最近更新 更多