gpt4 book ai didi

python - 仅当 i
转载 作者:行者123 更新时间:2023-11-28 22:29:53 26 4
gpt4 key购买 nike

例如,如果 a=[1,2,3,4,5],我希望 1 乘以所有其他元素,2 乘以 3,4,5 等等。我希望将乘积附加到最终输出的列表中。

我写了下面的代码,但它不起作用(只给出一个空列表作为输出):

a = [1,2,3,4,5]
b = []

for i in range(5):
for j in range(5):
if i<j:
b[i]=a[i]*a[j]
print(b)

最佳答案

如果我在 中运行它,我得到一个:

IndexError: list assignment index out of range

那是因为 b 是一个空列表,所以 b[0](或任何其他 b[i])超出范围.

然而,您的目标可能是:

b = [a[i]*a[<b>j</b>] for i in range(len(a))
for <b>j</b> in range(<b>i+1</b>,len(a))]

生成:

>>> b
[2, 3, 4, 5, 6, 8, 10, 12, 15, 20]

(即 [1*2, 1*3, 1*4, 1*5, 2*3, 2*4, 2*5, 3*4, 3*5, 4*5] )

这里的边界没有被显式检查,我们简单地将jrange(..)设置为从i开始+1(所以我们只知道每个 j 都将大于 i)。

另一种可能更优雅的方法是使用 itertools.combinations 模块:

<b>from itertools import combinations</b>

b = [x*y for x,y in <b>combinations(a,2)</b>]

关于python - 仅当 i<j 时才将列表元素 list[i] 和 list[j] 相乘的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42765655/

26 4 0

Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com