【问题标题】:How to sort user input list elements?如何对用户输入列表元素进行排序?
【发布时间】:2020-06-24 06:03:59
【问题描述】:

我正在尝试获取用户输入的列表,然后按升序对列表元素(整数)进行排序。但是元素存储为字符串,我不知道如何将每个元素转换为int 类型。例如:

p = input("Enter comma separated numbers:")
p = p.split(",")
p.sort()
print(p)

当我输入时

-9,-3,-1,-100,-4

我得到的结果是:

['-1', '-100', '-3', '-4', '-9']

但是想要的输出是:

[-100, -9, -4, -3, -1]

【问题讨论】:

    标签: python-3.x string list


    【解决方案1】:

    试试p = list(map(int, p.split(","))) 而不是你的第二行,这样行吗?

    【讨论】:

      【解决方案2】:

      您的p 是一个由字符串组成的列表,因此它们不会按其数值排序。试试这个:

      p.sort(key=int)
      

      如果您需要整数列表,请在开头进行转换:

      p = [int(i) for i in p.split(",")]
      

      【讨论】:

      • 是的,这行得通!你能给我提供一些关于 p.sort(key=int) 的详细信息,或者一些链接吗?
      • 我建议你先阅读official docs。这个answer(恰好是您的问题的副本)也可能会有所帮助。
      【解决方案3】:

      input("blabla") 会返回字符串值,即使您输入的是数字。当你对 p 进行排序时,你并没有像你想象的那样对整数进行排序。

      这段代码将列表的字符串元素转换为整数,您可以先这样做,然后对新的整数数组进行排序:

       for i in range(0,len(p)):
              p[i] = int(p[i])
      

      或者更简单的方法,你可以将字符串元素转换为整数,同时使用 int 参数分割字符串,就像上面提到的 zack256 一样

      【讨论】:

        猜你喜欢
        • 2010-12-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多