我编写了这个程序,将单个结果空列表中的所有子列表元素连接起来,然后对返回的结果列表进行排序。但是在我运行这个程序后,我得到了一个不寻常的输出我在控制台屏幕上显示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()
答案 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)