几天前,我一直在尝试许多方法和方法来获得所需的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列表中设置,然后继续val = 2*2*A[0] = 4
并在B列表中设置。然后是下一个val = 1*2*A[1] = 2
和val = 2*2*A[1] = 4
。我希望有这样的输出。
[2]
[4]
[2,2]
[4,4]
...............
更新:
我已经更新了一个代码示例,这次添加了一个for循环来构造list A
,但是它遇到了一些问题。我不十分理解为什么它会与 错误 list index out of range.
很明显,当len(list A)
为4
时,len(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]
---------------
我真的不知道如何解决此类问题,感谢您的帮助...
答案 0 :(得分:3)
您应该将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 = 1*2*A[0] = 2
覆盖val = 2*2*A[0] = 4
,为什么还要将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]
写入B [0]?
那没有道理。
编辑:
关于预期行为的最新协议:
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]
...或者使用numpy,一次更改数组的所有值会更容易:
def createXmlOutput(...) : Elem =
{
<something>
{ if (condition == true) <child>{ "my child value if condition would be true" }</child> }
<otherchild>{ "my other child value" }</otherchild>
</something>
}