我有这段代码片段:当我打印列表时我期望输出为[1,1],但我得到[0,0]。因为我已经将a和b初始化为列表变量,所以我认为"结果"将在循环后更新为a和b的值。如果我返回值a和b,我的程序工作正常,但我只是想知道为什么"结果"没有得到更新。我还在学习Python,所以感谢任何帮助
a=0 b=0 arrayA=[7,9,1] arrayB=[2,9,5] result=[a,b] for i in range(0,len(arrayA)): if(arrayA[i]>arrayB[i]): a+=1 elif (arrayA[i]==arrayB[i]): continue else: b+=1 print(result)
块引用
谢谢!
答案 0 :(得分:1)
result = [a,b],变量a和b不是引用。
a=0
b=0
arrayA=[7,9,1]
arrayB=[2,9,5]
for i in range(0,len(arrayA)):
if(arrayA[i]>arrayB[i]):
a+=1
elif (arrayA[i]==arrayB[i]):
continue
else:
b+=1
result=[a,b]
print(result)
会是你想要的
答案 1 :(得分:1)
列表(以及更多)之类的计算对象通过引用传递,因此这将为您提供所需的答案
using System;
using System.Collections.Generic;
public class Program
{
public static void Main()
{
int[] src = {4, 5, 6};
List<int> copy = Convert<List<int>>(src);
Stack<int> copy1 = Convert<Stack<int>>(src);
Queue<int> copy2 = Convert<Queue<int>>(src);
Console.WriteLine(string.Join(",",copy));
Console.WriteLine(string.Join(",",copy1));
Console.WriteLine(string.Join(",",copy2));
}
public static T Convert<T>(int[] src) where T : new()
{
var obj = Activator.CreateInstance(typeof(T), src);
return (T)obj;
}
}