我正在尝试执行内联操作,我需要将列表排序为进程的一部分。
sort
类型对象的list
函数在调用它的列表上运行,而不是返回结果。
Python docs证实了这一点:
list.sort()
对列表中的项目进行排序。
我通过Python命令行尝试了这个,结果如下:
>>> a = list("hello").sort()
>>> print a
None
>>> b = list("hello")
>>> print b
['h', 'e', 'l', 'l', 'o']
>>> b.sort()
>>> print b
['e', 'h', 'l', 'l', 'o']
有没有办法可以跳过这个问题并制作如下所示的行?
result = list(random.choice(basesalts)).sort()
使用上面的代码可以帮助我缩短代码的长度和详细程度。
答案 0 :(得分:13)
内置sorted()
:
>>> a = sorted(list('hello'))
>>> a
['e', 'h', 'l', 'l', 'o']
另请注意,您不再需要list()
:
>>> sorted('hello')
['e', 'h', 'l', 'l', 'o']
由于basesalts
似乎是一个字符串列表,您可以这样做:
result = sorted(random.choice(basesalts))
如果这是您正在寻找的那种输出。
答案 1 :(得分:5)
使用sorted。
它从iterable中的项目返回一个新的排序列表。
>>> a = sorted(list('hello'))
>>> a
['e', 'h', 'l', 'l', 'o']
>>>
不同之处在于list.sort()方法仅为列表定义。相反,sorted()函数接受任何可迭代的。
所以,你可以做到
>>> a = sorted('hello')
>>> a
['e', 'h', 'l', 'l', 'o']
>>>
看一下这篇好文章Sorting Mini-HOW TO。
答案 2 :(得分:0)
Sorted是你的朋友。它不是列表类的成员函数,它是一个以列表作为参数的内置函数。
班级列表没有排序功能。
list1 = [ 1, 4, 5, 2]
print sorted(list1)
>> [1, 2, 4, 5]