Python 输出中的列表推导式函数字符串评估无

jim*_*on 1 python string list-comprehension python-3.x jupyter-notebook

试图通过我定义的函数在 Python 中传递一个列表,但是当我运行代码时,我得到“无”作为输出。

为了可重复性,我将使用一个简单的示例,在该示例中,我希望将字符串中的所有单词都设为大写。

def upcase(x):
    print(x.upper())

upcase("word")
Run Code Online (Sandbox Code Playgroud)

这当然给出:

WORD
Run Code Online (Sandbox Code Playgroud)

但是现在,如果我尝试将我的函数应用于整个字符串,如下所示:

randoms = ['chicken', 'window', 'carpet', 'lampshade', 'crosswalk']

randoms_upcased = [upcase(x) for x in randoms]
print(randoms)
print(randoms_upcased)
Run Code Online (Sandbox Code Playgroud)

我得到:

CHICKEN
WINDOW
CARPET
LAMPSHADE
CROSSWALK
['chicken', 'window', 'carpet', 'lampshade', 'crosswalk']
[None, None, None, None, None]
Run Code Online (Sandbox Code Playgroud)

而我想要的输出是这个。

['chicken', 'window', 'carpet', 'lampshade', 'crosswalk']
['CHICKEN', 'WINDOW', 'CARPET', 'LAMPSHADE', 'CROSSWALK']
Run Code Online (Sandbox Code Playgroud)

这可能吗?感激地收到任何帮助。

wat*_*sts 6

您的 upcase 函数打印出结果,但它不返回任何内容。由于您没有指定返回值,因此默认返回None. 你会想要添加一个明确的回报:

def upcase(x):
    x = x.upper()
    print(x)
    return x
Run Code Online (Sandbox Code Playgroud)