gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 22:51:33 24 4
gpt4 key购买 nike

我正在编写一系列不同种类的 python 方法。我所拥有的是用户输入的数字,我把它变成了一个列表。然后我在输入列表上运行我的 bubble_sort 方法,然后打印结果。我保存了我的初始输入列表,以便我可以使用 selection_sort 重新排序,但是当我打印出我的原始列表时,我反而打印了 bubble_sorted 列表。我是 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_list = input_list 意味着 pass_list 只是同一个列表对象的不同名称。因此,在调用 bubble_sort(pass_list) 之后,您修改了 pass_list 以及 input_list,因为它们是同一个对象(在内存中)。因此,当您打印 input_list 时,您会看到排序后的列表。

您可以通过以下方式修复它:

pass_list = input_list[:]

这通过使用 Python's slicing notation 创建了 input_list 的副本.然后您可以安全地对 pass_list 进行排序,它不会影响原始 input_list

关于python - python 排序中不可更改的输入变量问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21392525/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com