python排序中输入变量不可更改的问题

python排序中输入变量不可更改的问题,python,Python,我正在编写一系列不同种类的python方法。我所拥有的是用户输入的数字,我把它们变成一个列表。然后在输入列表上运行bubble_排序方法,然后打印结果。我保存了我的初始输入列表,这样我就可以使用selection\u sort重新排序,但是当我打印出我的原始列表时,我打印的是bubble\u排序列表。我是python新手,所以我不确定我是否遗漏了语言中关于变量的基本概念。这是我的密码 def listify(i): temp_list = [] input_list_local

我正在编写一系列不同种类的python方法。我所拥有的是用户输入的数字,我把它们变成一个列表。然后在输入列表上运行bubble_排序方法,然后打印结果。我保存了我的初始输入列表,这样我就可以使用selection\u sort重新排序,但是当我打印出我的原始列表时,我打印的是bubble\u排序列表。我是python新手,所以我不确定我是否遗漏了语言中关于变量的基本概念。这是我的密码

def listify(i):
    temp_list = []
    input_list_local = []
    input_list_local = list(i)
    for char in input_list_local:
        if char.isdigit():
            temp_list.append(char)
    return temp_list


def bubble_sort(input):
    for i in range(len(input)-1):
        for j in range(len(input)-1):
            if(input[j] > input[j+1]):
                tmp = input[j]
                input[j] = input[j+1]
                input[j+1] = tmp
    return input

def selection_sort(input):
    pass


input = raw_input("enter random numbers here seperated by spaces-> ")
print("you entered "+input)
input_list = listify(input)
print(input_list)
pass_list = input_list
print(bubble_sort(pass_list))
print(input_list) #should print original input list.  Instead prints sorted list

您正在修改相同的列表:
pass\u list=input\u list
意味着
pass\u list
只是同一列表对象的不同名称。因此,在调用
bubble\u sort(pass\u list)
之后,您修改了
pass\u list
,但也修改了
input\u list
,因为它们是相同的对象(在内存中)。因此,在打印
input\u list
时,您会看到排序列表

您可以通过执行以下操作来修复它:

pass_list = input_list[:]

这将使用创建一份
输入列表
。然后,您可以安全地对
pass\u list
进行排序,并且不会影响原始的
input\u list
您正在修改相同的列表:
pass\u list=input\u list
意味着
pass\u list
只是同一列表对象的不同名称。因此,在调用
bubble\u sort(pass\u list)
之后,您修改了
pass\u list
,但也修改了
input\u list
,因为它们是相同的对象(在内存中)。因此,在打印
input\u list
时,您会看到排序列表

您可以通过执行以下操作来修复它:

pass_list = input_list[:]
这将使用创建一份
输入列表
。然后您可以安全地排序
传递列表
,而不会影响原始的
输入列表