我试图找到列表中元素的所有排列,并将其添加到全局字典
代码:
outp={}
k=0
def func(i,arr):
global outp
global k
arr=arr.copy()
for j in range(i,len(list)):
arr[i],arr[j] = arr[j],arr[i]
if i!=j or i==0:
k=k+1
print("\n\n",arr,k)
outp[k]=arr
print("\n",outp)
func(i+1,arr)
list = [1,2,3,8]
func(0,list)
以下输出: 直到第4个元素它正确更新。在第5个元素期间,它更新了字典中的第5个和第3个元素。我不知道为什么会这样。请帮助
[1, 2, 3, 8] 1
{1: [1, 2, 3, 8]}
[1, 2, 8, 3] 2
{1: [1, 2, 3, 8], 2: [1, 2, 8, 3]}
[1, 3, 2, 8] 3
{1: [1, 2, 3, 8], 2: [1, 2, 8, 3], 3: [1, 3, 2, 8]}
[1, 3, 8, 2] 4
{1: [1, 2, 3, 8], 2: [1, 2, 8, 3], 3: [1, 3, 2, 8], 4: [1, 3, 8, 2]}
[1, 8, 2, 3] 5
{1: [1, 2, 3, 8], 2: [1, 2, 8, 3], 3: [1, 8, 2, 3], 4: [1, 3, 8, 2], 5: [1, 8, 2, 3]}
答案 0 :(得分:1)
您需要在字典中放置数组的副本:
public String authenticate(String host, String user, String password) throws JSchException {
JSch jsch = new JSch();
Session session = jsch.getSession(user, host, 22);
session.setPassword(password);
Properties obj_Properties = new Properties();
obj_Properties.put("StrictHostKeyChecking", "no");
session.setConfig(obj_Properties);
session.connect(5000);
String version = session.getServerVersion();
session.disconnect();
return version;
}
答案 1 :(得分:0)
这是将列表复制到新列表的更好方法
arr=arr[:]
。
https://repl.it/repls/BronzeYellowConversion