python程序在按排序顺序排列列表元素时显示错误

时间:2014-07-31 09:14:21

标签: python sorting

我编写了这个程序,将单个结果空列表中的所有子列表元素连接起来,然后对返回的结果列表进行排序。但是在我运行这个程序后,我得到了一个不寻常的输出我在控制台屏幕上显示None。 这段代码中有什么问题?

n=[[44,45,76,8,678,24,24],[45,45737,45,7373]]

def makelist(lis):
     result= []
     for i in lis:
         for j in i:
           result.append(j)
     return result

print makelist(n).sort()

6 个答案:

答案 0 :(得分:2)

makelist(n).sort()不会返回任何内容

喜欢

temp = makelist(n)
temp.sort()
print temp

答案 1 :(得分:2)

给定一个列表lst然后调用sort将就地排序列表,但它不会返回排序列表。

示例解决方案:

# Make this work in Python2 and Python3
from __future__ import print_function

import itertools


n=[[44,45,76,8,678,24,24],[45,45737,45,7373]]

def makelist(lis):
     result= []
     for i in lis:
         for j in i:
           result.append(j)
     return result

# Variation 1
print(sorted(makelist(n)))

# Variation 2
lst = makelist(n)
lst.sort()
print(lst)

# Variation 3 (replacing the makelist flattening operation)
lst = list(itertools.chain.from_iterable(n))
lst.sort()
print(lst)

答案 2 :(得分:2)

n=[[44,45,76,8,678,24,24],[45,45737,45,7373]]

def makelist(lis):
 result= []
 for i in lis:
     for j in i:
       result.append(j)
 return result

这一切都没问题。现在运行:

y = makelist(n)
y.sort()
print y

您的列表已经过排序并存储在' y'变量

答案 3 :(得分:1)

使用排序方法而不是排序,这将解决您的问题:

n=[[44,45,76,8,678,24,24],[45,45737,45,7373]]

def makelist(lis):
     result= []
     for i in lis:
         for j in i:
           result.append(j)
     return result

print sorted(makelist(n))

# OR check this way
res = makelist(n)
print res
res.sort()
print res

要阅读有关sort()的更多信息,您可以使用以下链接:http://www.tutorialspoint.com/python/list_sort.htm

答案 4 :(得分:1)

sort()是一种列表方法。它对列表进行了排序,并没有返回列表作为该事实的提示。

sorted()是一个内置函数,而不是列表上的方法,因为它是 更常见的是将任何迭代器作为其第一个参数,而不仅仅是列表。它当然会返回一个列表。

n=[[44,45,76,8,678,24,24],[45,45737,45,7373]]

    def makelist(lis):
         result= []
         for i in lis:
             for j in i:
               result.append(j)
         return result
    print sorted(makelist(n))

列表的.sort()方法对列表进行排序,而sorted()创建一个新列表。

答案 5 :(得分:1)

sort()函数就地排序并返回None。另一方面,sorted()函数返回一个新列表。因此,您可以使用当前的实现:

makelist(n).sort()
print(n)

或者,您可以使用sorted():

print sorted(makelist(n), key=int)