在迭代可变数量的索引时调用表达式中的索引(Python)

Posted

技术标签:

【中文标题】在迭代可变数量的索引时调用表达式中的索引(Python)【英文标题】:Calling indices in an expression while iterating over a variable number of indices (Python) 【发布时间】:2021-04-27 13:56:17 【问题描述】:

我想迭代列表长度给定的可变数量的索引,使用列表中的值作为范围。此外,我想在我的表达式中调用索引。

例如,如果我有一个列表 [2,4,5],我会想要这样的:

import itertools

for i0, i1, i2 in itertools.product(range(2),range(4),range(5)):
    otherlist[i0]**i0 + otherlist[i2]**i2

我能得到的最接近的是

for [i for i in range(len(mylist))] in itertools.product(*[range(i) for i in mylist]):
    

但我不知道如何从这里调用索引。

【问题讨论】:

【参考方案1】:

你已经很亲近了。当您使用 for 语句时,我发现最好 保持目标列表简单并访问目标列表的组件 for循环;在这段代码中,product() 生成的元组。

import itertools

mylist = [2,4,5]
otherlist = list(range(5))

for t in itertools.product(*[range(i) for i in mylist]):
    print(otherlist[t[0]]**t[0] + otherlist[t[2]]**t[2])
# 2
# 2
# 5
# 28
# 257
# ...

【讨论】:

以上是关于在迭代可变数量的索引时调用表达式中的索引(Python)的主要内容,如果未能解决你的问题,请参考以下文章

(58)ElasticSearch索引不可变的原因

使用流在 C++ 中读取可变长度输入

Python Pandas 迭代和索引

Python3 - 列表

Python列表操作

学习python的日常3