python - 我如何在 Python 中概括这种列表理解?

标签 python list-comprehension

我有一个整数列表 l1=[a,b,c]_1to9=range(1,10)。我想得到这个:

 [a*i1+b*i2+c*i3 for i1 in _1to9 for i2 in _1to9 for i3 in _1to9]

但问题是 l1 不一定是 3 个元素的列表。那么我该如何概括呢?

编辑:帮助形象化我想要实现的目标:

 >>> l1=[10001,1010, 100]
 >>> [l1[0]+i1+l1[1]*i2+l1[2]*i3 for i1 in _1to9 for i2 in _1to9 for i3 in _1to9]

最佳答案

一些基础数学可能会有所帮助。首先,意识到 a*i1+b*i2+c*i3inner (dot) product两个三元素列表,可以概括为

def dot_product(a, b):
    return sum(x * y for x, y in zip(a, b))

for i1 in _1to9 for i2 in _1to9 for i3 in _1to9 循环 Cartesian product [_1to9] * 3。它在 Python 标准库中作为 itertools.product,所以你有

[dot_product([a, b, c], x) for x in itertools.product(_1to9, repeat=3)]

将其推广到任意列表 l 给出

[dot_product(l, x) for x in itertools.product(_1to9, repeat=len(l))]

关于python - 我如何在 Python 中概括这种列表理解?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10673798/

相关文章:

python - 为什么我的 Flask 应用程序会给出此响应 "class User(db.model): AttributeError: ' SQLAlchemy' 对象没有属性 'model' “?

python - 在 Seaborn 情节中叠加不同年份的 Pandas 时间序列

python - 从类定义中的列表理解访问类变量

Python嵌套字典理解

python - 在列表中查找独特的项目并将它们添加到具有列表理解的新列表中

python - verbose_name_plural 在模型中出乎意料?

python - 尝试使用 USB 将 Nintendo Switch 与 Raspberry 3b+ 进行通信

python - 为什么使用 .loc[] 访问 pandas 数据帧的列会产生重复的行?

带有集合的 Python 嵌套字典理解

python - 多列表理解转化为单列表理解