不使用sort/sorted合并Python列表升序排序,结果异常如何解决
问题原因
- 核心问题是拆分输入后没有把字符串转成数值类型:
input().split()得到的所有元素都是字符串类型,直接拿字符串对比大小时,Python会按ASCII码逐位比较,比如"10"和"4"对比时,第一位"1"的ASCII码比"4"小,所以会判定"10"<"4",最终排序结果完全错乱。 - 你测试输入里的10、20会跑到4前面,就是字符串比较规则导致的。
修改方案
只需要在读取输入的时候把每个元素转成int类型即可,修改后的代码如下:
def list_merge(): # 拆分输入时直接转成int类型 list_1 = [int(x) for x in input("Type list 1: ").split(", ")] list_2 = [int(y) for y in input("Type list 2: ").split(", ")] result = list_1 + list_2 new_list = [] while result: minimum = result[0] for x in result: if x < minimum: minimum = x new_list.append(minimum) result.remove(minimum) print(new_list)
用你给出的测试输入(列表1为1, 4, 7, 10、列表2为4, 6, 8, 20)运行修改后的代码,输出就是你预期的[1, 4, 4, 6, 7, 8, 10, 20]。
内容的提问来源于stack exchange,提问作者user12354454
相关产品推荐
相关产品推荐

