【问题标题】:Error with negative numbers in list. Wrong output.列表中的负数错误。错误的输出。
【发布时间】:2017-04-17 17:33:55
【问题描述】:
N=int(raw_input())
A=raw_input()
a_list=A.split()
for i in xrange (len(a_list)):
    a_list[i]=int(a_list[i])
s=list(set(a_list))
sorted(s)
print s

当我输入 N=5 并放入所有正值时,我得到的列表是按升序排列的,但是当我输入 N=5 并放入负值时,它并没有给我一个按升序排列的列表。为什么?

【问题讨论】:

  • sorted(s) 构建了一个您完全忽略并丢弃的排序列表。它根本不会影响s
  • 你应该改用s.sort()
  • 使用了 s.sort() 有效!!
  • @SaranshArora,我希望我的回答和解释是您想要的!

标签: python list set


【解决方案1】:

您在正确的轨道上,但是您使用的是sorted,sorted() 返回一个新的排序列表,而原始列表不受影响

sort() 对列表进行就地排序,改变列表索引,并返回 None

我们可以对任何可迭代、列表、字典、字符串、元组进行排序。

因此,当你想要一个排序后的对象时使用sorted(),,当你想要改变列表时使用sort()

sorted() 相比,sort() 速度快,因为它不复制。

在这里阅读完整:What is the difference between sorted(list) vs list.sort() ?

解决方案:

    N=int(raw_input())
    A=raw_input()
    a_list=A.split()
    for i in xrange (len(a_list)):
        a_list[i]=int(a_list[i])
    s=list(set(a_list))
    s.sort()
    print(s)

【讨论】:

  • 你的解释完全错误。 sorted 根本不是任何类的方法,这些函数或方法属于或不属于哪个类并不决定它们是否就地运行。
  • 关于答案的任何描述以及问题中的问题❓
猜你喜欢
  • 1970-01-01
  • 2020-04-16
  • 2014-11-03
  • 1970-01-01
  • 2015-02-11
  • 2016-01-08
  • 2015-01-10
  • 2017-10-08
  • 2012-03-27
相关资源
最近更新 更多