[英]Sorting numbers in python
我正在尝试获得一个函数,如果您对它进行排序(列表名),它将对该列表中的所有数字进行从最小到最大的排序。
我不确定我的问题是什么,但是我需要一些帮助,因为输出实际上并不是最小到最大,对于输出的前两个数字却不是最小到最大。
范例:
如果列表中有23、212、44个,而不是我对它进行排序,则输出将是这样。
输出:
212,23,44
应该是 23、44、212。
码:
def sort(my_list):
size = len(my_list)
for i in range(size):
for j in range(size-i-1):
if(my_list[j] > my_list[j+1]):
tmp = my_list[j]
my_list[j] = my_list[j+1]
my_list[j+1] = tmp
更多代码:
numbers=([])
amount=input("How many numbers are in your list? ")
print("")
counter = 0
ran = 0
while counter < int(amount):
counter = counter + 1
ran = ran + 1
num3 = input(str(ran) + ". Input: ")
try:
val = int(num3)
except ValueError:
num3 = input(str(ran) + ". Input: ")
sort(numbers)
numbers.append(num3)
看起来您的列表中除了字符串以外没有任何数字。 Python不会尝试猜测这些字符串中可能包含的内容,因此您会得到一个奇怪的排序顺序。
您有两种选择:
int
( if(int(my_list[j]) > int(my_list[j+1])):
python natural sort
以获取有关如何在Python中实现“自然排序”的答案。 如果只想对其进行排序,请使用sorted:
sorted_my_list = sorted(my_list,key=int)
或使用适当的方式对其进行排序
my_list.sort(key=int)
如果要修复程序,请将my_list转换为int或至少比较整数
if ( int(my_list[j]) > int(my_list[j+1])):
另外,您可以在一个语句中交换两个变量:
my_list[j],my_list[j+1] = my_list[j+1],my_list[j]
我只是使用了您的代码(仅添加了return
语句)。 并返回期望值:
def sort(my_list):
size = len(my_list)
for i in range(size):
for j in range(size-i-1):
if(my_list[j] > my_list[j+1]):
tmp = my_list[j]
my_list[j] = my_list[j+1]
my_list[j+1] = tmp
return my_list # Note I added this return statement
print sort([23,212,44])
>>>
[23, 44, 212]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.