0

我有列表 x 这是[10,20,30,40,50].
所以 x 的 len 是 5。
所以以下是有道理的:

>>> x=[10,20,30,40,50]
>>> print(list(range(len(x))))
[0, 1, 2, 3, 4]

我已将上述内容放入 a 中function,它似乎可以运行。我在输出中得到
的额外内容是什么?None

def foo(aList):
    listLen = len(aList) 
    for x in list(range(listLen)):
        print(x)

x=[10,20,30,40,50]
print(foo(x))

编辑
如果我将上述内容应用于反转列表的任务,它似乎很好,所以 None 不会引起问题:

def foo(aList):
    newList = [] 
    listLen = len(aList) 
    for x in list(range(listLen)):
        newList.append(aList[listLen-(x+1)])
    return newList

x=[10,20,30,40,50]
print(foo(x))
4

4 回答 4

2
print(foo(x))

这将打印 foo() 函数的返回值。然而 foo() 不返回任何东西,这隐含地意味着它的返回值为 None。所以你最终打印“无”

也许你只是想要这个:

def foo(aList):
    listLen = len(aList) 
    return list(range(listLen)):

x=[10,20,30,40,50]
print(foo(x))
于 2013-10-10T07:53:30.680 回答
2

您从 foo 打印返回值,没有显式 return 语句的函数将返回 None。

于 2013-10-10T07:55:00.163 回答
2

print将数据发送到标准输出(通常是终端)。 print实际上并没有从函数中“返回”任何东西。为此,您需要return关键字。您的函数是函数print内部的结果并返回None(默认值)。函数外部的print语句然后打印返回值是None.

修复可能是从您的函数返回列表,而不是打印它的元素。然后你可以在函数之外打印它。类似于以下内容:

def foo(aList):
    listLen = len(aList) 
    return list(range(listLen))

x=[10,20,30,40,50]
print(foo(x))
于 2013-10-10T07:52:33.620 回答
1
print(foo(x))

这将打印您的函数返回的内容。您的函数打印列表并且不返回任何内容。

因此,正在打印的列表是您的函数打印的列表。打印功能打印无。

这个函数应该做你想做的。

def foo(aList):
    newList = [] 
    listLen = len(aList) 
    return range(listLen)

然后

x=[10,20,30,40,50]
print foo(x)

您的函数将返回列表,打印语句将打印它。


另一种方法是只调用函数而不打印。

def foo(aList):
    listLen = len(aList) 
    for x in list(range(listLen)):
        print(x)

x=[10,20,30,40,50]
foo(x)
于 2013-10-10T07:55:55.887 回答