Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 追加更改列表的其他元素_Python_Arrays_List - Fatal编程技术网

Python 追加更改列表的其他元素

Python 追加更改列表的其他元素,python,arrays,list,Python,Arrays,List,将一个元素添加到历史记录列表时,它会根据我添加的元素更改其余元素 inputt="^<<<" cordenadas=[0,0] historial=[] for i in inputt: if i == "^": cordenadas[0]+=1 elif i== "v": cordenadas[0]-=1 elif i== "<":

将一个元素添加到历史记录列表时,它会根据我添加的元素更改其余元素

inputt="^<<<"
cordenadas=[0,0]
historial=[]
for i in inputt:
    if i == "^":
        cordenadas[0]+=1
    elif i== "v":
        cordenadas[0]-=1
    elif i== "<":
        cordenadas[1]-=1
    elif i== ">":
        cordenadas[1]+=1
    historial.append(cordenadas)
    print(historial)


这是由于Python中列表的易变性造成的

  • cordenadas
    将始终指向同一项目-除非您创建新列表
  • 每次使用
    .append
    时,它都会附加相同的列表

  • 尝试将
    cordenadas=[0,0]
    移动到for循环中,看看会发生什么。比较使用的两个程序的行为,以更好地了解Python引用的工作方式。

    input=“^
    input=“^是否要维护每个符号的移动列表或整体移动的聚合列表?
    
    input = "^<<<"
    historial = []
    for i in input:
        cordenadas = [0, 0]
        if i == "^":
            cordenadas[0] += 1
        elif i == "v":
            cordenadas[0] -= 1
        elif i == "<":
            cordenadas[1] -= 1
        elif i == ">":
            cordenadas[1] += 1
        historial.append(cordenadas)
    print(historial)
    
    input = "^<<<"
    historial = []
    for i in input:
        cordenadas = [0, 0]
        if i == "^":
            cordenadas[0] += 1
        elif i == "v":
            cordenadas[0] -= 1
        elif i == "<":
            cordenadas[1] -= 1
        elif i == ">":
            cordenadas[1] += 1
        historial.append(cordenadas)
    print(historial)
    
    inputt="^<<<"
    cordenadas = [0,0]
    
    historial=[]
    
    for i in inputt:
        # declare a new list which contans 'cordenadas' values
        coord = [cordenadas[0],cordenadas[-1]]
        if i == "^":
            coord[0]+=1
        elif i== "v":
            coord[0]-=1
        elif i== "<":
            coord[1]-=1
        elif i== ">":
            coord[1]+=1
        # save the changes in the original list
        cordenadas = coord
        historial.append(coord)
        print(historial)