gpt4 book ai didi

python - 保持列表中值的增长并保持列表大小

转载 作者:太空宇宙 更新时间:2023-11-03 10:49:32 24 4
gpt4 key购买 nike

几天前,我一直在尝试多种方式和方法,以在 Python 中获得所需的列表行为。我需要构建一个方法,它在保持列表大小的同时分配和更改列表中的值。让我解释一下

我有这样一段代码。

A = [1,1,1,1,1]
B=[]

for i in range(0,len(A)):
for j in range(1,3):
val = j*2*A[i]
B.insert(i,val)
print(B)

我得到的结果:

[4, 2]
[4, 4, 2, 2]
[4, 4, 4, 2, 2, 2]
[4, 4, 4, 4, 2, 2, 2, 2]
[4, 4, 4, 4, 4, 2, 2, 2, 2, 2]

我想做什么!

在这种情况下取​​ A-list 的第一个值 int 1。然后通过增加范围函数进行一些计算。 val = 1*2*A[0] = 2并在B-list中设置,继续val = 2*2*A[0] = 4并设置在B名单中。然后是下一个 val = 1*2*A[1] = 2val = 2*2*A[1] = 4。我期待有这样的输出。

[2]
[4]
[2,2]
[4,4]
...............

更新:

我已经更新了一个代码示例,这次添加了一个 for 循环来构建 list A 但是它遇到了一些问题。我真的不明白为什么它运行 < strong>error list index out of range. 这很清楚,当 len(list A)4len(list B) 变为 5。预计 list B 不会超出范围?

A = []
B = []
for n in range(1,11):
A.append(n/n)
for i in range(0,len(A)):
B.insert(i, A[i])
for j in range(1,3):
for k, _ in enumerate(B):
B[k] = j*2*A[k]
print(B)

我得到的输出:

[2.0]
[4.0]
[2.0, 4.0] #<------- Not need it
[2.0, 2.0]
[4.0, 2.0] #<------- Not need it
[4.0, 4.0]
[2.0, 1.0, 4.0] #<------- Not need it
[2.0, 2.0, 4.0] #<------- Not need it

IndexError: list index out of range

预期输出。

[2.0]
[4.0]
[2.0, 2.0]
[4.0, 4.0]
---------------

我真的不知道如何解决这类问题,感谢任何帮助...

最佳答案

你应该把 insert 函数放在外层循环中,否则你不仅要为 A 中的每个元素插入,而且还要为 range 中的每个计算步骤插入(1, 3)

A = [1,1,1,1,1]
B=[]

for i in range(0,len(A)):
B.insert(i, A[i])
for j in range(1,3):
B[i] = j*2*A[i]
print(B)

或更好的 Python:

A = [1, 1, 1, 1, 1]
B = []

for i, elmnt in enumerate(A):
B.insert(i, elmnt)
for j in range(1, 3):
B[i] = j * 2 * elmnt
print(B)

但是,如果你在下一步中用 val = 2 覆盖它,你为什么要将 val = 1*2*A[0] = 2 写入 B[0] *2*A[0] = 4?
这没有意义。


编辑:
关于预期行为应该是什么的最新协议(protocol):

A = [1, 1, 1, 1, 1]
B = []

for i, elmnt in enumerate(A):
B.insert(i, elmnt)
for j in range(1, 3):
for k, _ in enumerate(B):
B[k] = j * 2 * elmnt
print(B)
[2]
[4]
[2, 2]
[4, 4]
[2, 2, 2]
[4, 4, 4]
[2, 2, 2, 2]
[4, 4, 4, 4]
[2, 2, 2, 2, 2]
[4, 4, 4, 4, 4]

...或者使用 numpy 可以更轻松地一次更改数组的所有值:

import numpy as np
A = np.array([1, 1, 1, 1, 1], 'int')
B = np.array([], 'int')

for i, elmnt in enumerate(A):
B = np.append(B, elmnt)
for j in range(1, 3):
B[:] = j * 2 * elmnt
print(B)

[2]
[4]
[2 2]
[4 4]
[2 2 2]
[4 4 4]
[2 2 2 2]
[4 4 4 4]
[2 2 2 2 2]
[4 4 4 4 4]

关于python - 保持列表中值的增长并保持列表大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53514524/

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