为什么 Print() 与 Python 中的反向组合会产生 None?

Why does Print() in combination with reverse in Python produce None?

我想我刚刚遇到一个有趣的案例。

我试图反转我的列表,然后使用 print() 函数打印输出。

以下是我试过的两种方法:

1.直接打印:

x = [2.0, 9.1,12.5]
print(x.reverse())

输出:None

2。使用 f 字符串:

x = [2.0, 9.1,12.5]
print(f"The reverse of x is {x.reverse()}")

输出:The reverse of x is None

如上所示,两种方法的输出都是 None

谁能解释为什么这两种方法都会产生 None

P.S。我知道此方法有效并打印受人尊敬的列表

x.reverse()
print(x)

但我对此不感兴趣?我想找出为什么上述两种方法都会产生 None.

你可以这样反转打印:

print(x[::-1])

你试过这个吗:

x = [2.0, 9.1,12.5]
x.reverse()
print(x)

理论上应该可以。如果不是,请不要喷我。我对堆栈溢出还很陌生,所以我不太确定如何 post 回答和排序。

x.reverse() 是所谓的 in-place 操作,这意味着存储在变量 x 中的列表被修改(反转)并且 x.reverse() 的输出是 None。因此,当您 运行 print(x.reverse()) 时,它会打印输出,在本例中为 None.

P.S.

如果您需要 return 原始列表的反向副本的操作,您可以使用 reversed() 更多信息 here:

x = [2.0, 9.1, 12.5]
print(list(reversed(x)))

(注:list用于将reversed的迭代器结果转为列表)

第二个选项是通过 slicing 创建反向副本(感谢@Andrey):

x = [2.0, 9.1, 12.5]
print(x[::-1])

更多上下文:

一般来说,in-place操作returnNone,有助于防止错误和区分in-place和正常操作。

您可以使用以下代码反转列表并打印它!

# create a list 
mylist = [2.0, 9.1,12.5] 
x.reverse() # Reverse the list
print(mylist) # Print the list


# Output: [12.5, 9.1, 2.0]