在python3中更新列表

时间:2018-04-13 17:22:55

标签: python-3.x list

我有这段代码片段:当我打印列表时我期望输出为[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)
     

块引用

谢谢!

2 个答案:

答案 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;
    }
}