列表中的 extend() 和 + 之间的区别 - python
Difference between extend() and + in lists - python
我想知道 l1+l2 和 l1.extend(l2) 之间的确切区别是什么,因为它们都连接了 python 中的列表。
关于同一问题,我已经完成了以下 post。
Concatenating two lists - difference between '+=' and extend()
我清楚地知道 extend() 涉及函数调用,因此可能会更昂贵一些。而且 l1+l2 选项不能用于非局部变量。
但在我的例子中,我有一个递归代码,最终 returns 连接两个列表。我使用扩展方法 l1.extend(l2)。我收到以下错误。
nonetype' 对象不可迭代
'NoneType' 类型的对象没有 len()
但请注意,该列表不是 None 或 None 类型。
我什至尝试打印 type(l1) 和 len(l1) 并且类型仅为列表。
但有一件事是,如果我用 l1 + l2 替换扩展方法,整个代码工作正常并且我没有收到任何错误。
请问这是为什么?任意 ideas/suggestions
>>> print(l1.extend(l2))
None
l1.extend(l2)
returns none 而 l1 已更新。错误(但没有代码我们无法确定)可能是您需要再次将 l1.extend(l2)
分配给(新)变量。
我想知道 l1+l2 和 l1.extend(l2) 之间的确切区别是什么,因为它们都连接了 python 中的列表。
关于同一问题,我已经完成了以下 post。
Concatenating two lists - difference between '+=' and extend()
我清楚地知道 extend() 涉及函数调用,因此可能会更昂贵一些。而且 l1+l2 选项不能用于非局部变量。
但在我的例子中,我有一个递归代码,最终 returns 连接两个列表。我使用扩展方法 l1.extend(l2)。我收到以下错误。
nonetype' 对象不可迭代
'NoneType' 类型的对象没有 len()
但请注意,该列表不是 None 或 None 类型。 我什至尝试打印 type(l1) 和 len(l1) 并且类型仅为列表。
但有一件事是,如果我用 l1 + l2 替换扩展方法,整个代码工作正常并且我没有收到任何错误。
请问这是为什么?任意 ideas/suggestions
>>> print(l1.extend(l2))
None
l1.extend(l2)
returns none 而 l1 已更新。错误(但没有代码我们无法确定)可能是您需要再次将 l1.extend(l2)
分配给(新)变量。