Python 中 为什么 list.append() 返回 None

list.append() 方法返回 None 因为它改变了原始列表。 大多数在原地改变对象的方法在 Python 中返回 None。

a_list = ['www', 'zadmei']

a_list.append('.')
a_list.append('com')

print(a_list)  # ?️ ['www', 'zadmei', '.', 'com']

Python 中 为什么 list.append() 返回 None

list.append() 方法将一个项目添加到列表的末尾。

该方法在改变原始列表时返回 None 。

这是 Python 中的一种约定,用于改变原始对象以返回 None 的方法。

如果我们需要通过将值附加到现有列表来获取新列表,请使用加法 + 运算符。

a_list = ['www', 'zadmei']

new_list = a_list + ['com']

print(new_list)  # ?️ ['www', 'zadmei', 'com']

print(a_list)  # ?️ ['www', 'zadmei']

当加法 + 运算符与两个列表一起使用时,它将这些列表组合成一个列表。

注意 ,原始列表保持不变。

我们还可以使用带有布尔值或运算符的 list.append() 方法将值附加到列表并返回列表对象。

a_list = ['www', 'zadmei']


same_list = a_list.append('com') or a_list
print(same_list)  # ?️ ['www', 'zadmei', 'com']

print(a_list)  # ?️ ['www', 'zadmei', 'com']

表达式 x 或 y 如果为真则返回左边的值,否则返回右边的值。

list.append() 方法将值添加到列表的末尾并返回 None,因此返回后备值。

这两个变量存储相同的列表(内存中的相同位置),因此改变一个变量会改变另一个变量。

或者,我们可以使用可迭代解包运算符通过将值附加到现有列表来获取新列表。

a_list = ['www', 'zadmei']

new_list = [*a_list, 'com']

print(new_list)  # ?️ ['www', 'zadmei', 'com']

print(a_list)  # ?️ ['www', 'zadmei']

* 可迭代解包运算符使我们能够在函数调用、推导式和生成器表达式中解包可迭代对象。

example = (*('a', 'b'), 'c')

# ?️ ('a', 'b', 'c')
print(example)

我们可以想象我们将列表中的项目解包并将它们作为逗号分隔值传递以创建一个新列表。

解压现有列表后,我们可以将一个或多个值添加到列表中。

不要尝试将调用 append() 、insert() 或 extend() 的结果分配给变量,因为改变原始对象的方法最常返回 None。

大多数情况下,我们可以将鼠标悬停在 IDE 中的方法上以查看方法的返回值。

如果一个方法返回 None,那么它就地改变一个对象。

相反,大多数返回 None 以外的值的方法通常会返回一个新对象并且不会改变原始对象。