【发布时间】:2022-01-06 03:32:50
【问题描述】:
我有一个关于 python 列表的问题,当我尝试将列表添加到列表时,我想生成一个类似 (001, 002, 011, 012) 的数组,新列表尝试覆盖旧元素
n = 3
def setNextCombination(P):
idx = len(P) - 1
while True:
if idx == 0:
break
if P[idx] < idx:
P[idx] += 1
curr = idx + 1
while curr < len(P):
P[curr] = P[idx]
curr += 1
return P, True
idx -= 1
return [], False
def path_choosing():
P = np.zeros(n, dtype=int)
flag = True
arr = [0,0,0,0]
idx = 0
while True:
P, flag = setNextCombination(P)
if(flag == False): break
arr[idx] = P
idx += 1
print(idx)
print(arr)
path_choosing()
实际输出:
1
[array([0, 0, 1]), 0, 0, 0]
2
[array([0, 0, 2]), array([0, 0, 2]), 0, 0]
3
[array([0, 1, 1]), array([0, 1, 1]), array([0, 1, 1]), 0]
4
[array([0, 1, 2]), array([0, 1, 2]), array([0, 1, 2]), array([0, 1, 2])]
我的异常输出
1
[array([0, 0, 1]), 0, 0, 0]
2
[array([0, 0, 1]), array([0, 0, 2]), 0, 0]
3
[array([0, 0, 1]), array([0, 0, 2]), array([0, 1, 1]), 0]
4
[array([0, 0, 1]), array([0, 0, 2]), array([0, 1, 1]), array([0, 1, 2])]
我不知道怎么做,请帮帮我
【问题讨论】:
-
我将编辑我的标签
-
数组和列表是不同的东西。此外,您似乎期待按值传递语义,其中将对象传递给函数会生成该对象的副本。这不是 Python 的工作方式。快速了解如何在 Python 中传递对象:nedbatchelder.com/text/names.html
标签: python python-3.x list arraylist