gpt4 book ai didi

python - 为什么我不能在 Python 中使用 '+' 运算符将元组添加到列表中?

转载 作者:太空狗 更新时间:2023-10-30 01:49:23 26 4
gpt4 key购买 nike

Python 不支持向列表中添加元组:

>>> [1,2,3] + (4,5,6)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can only concatenate list (not "tuple") to list

在语言中提供这样的支持有什么缺点?请注意,我希望这是对称的:[1, 2] + (3, 4)(1, 2) + [3, 4] 都会计算到一个全新的列表 [1, 2, 3, 4]。我的理由是,一旦有人将运算符 + 应用于元组和列表的混合,他们很可能会再次这样做(很可能在同一个表达式中),因此我们不妨提供列表以避免额外的转换。

这是我提出这个问题的动机。

我经常有一些小集合,我更喜欢将它们存储为元组以避免意外修改并提高性能。然后我需要将这些元组与列表结合起来,并且必须将它们中的每一个都转换为列表使得代码非常难看。

请注意,+=extend 可能适用于简单的情况。但一般来说,当我有一个表达

columns = default_columns + columns_from_user + calculated_columns

我不知道其中哪些是元组,哪些是列表。所以我要么必须将所有内容都转换为列表:

columns = list(default_columns) + list(columns_from_user) + list(calculated_columns)

或者使用 itertools:

columns = list(itertools.chain(default_columns, columns_from_user, calculated_columns))

这两种解决方案都比简单的加法难看;并且 chain 也可能更慢(因为它必须一次遍历输入一个元素)。

最佳答案

这不受支持,因为 + 运算符应该是对称的。您期望什么返回类型? Python Zen 包含规则

In the face of ambiguity, refuse the temptation to guess.

不过,以下是可行的:

a = [1, 2, 3]
a += (4, 5, 6)

这里没有歧义使用什么类型。

关于python - 为什么我不能在 Python 中使用 '+' 运算符将元组添加到列表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9897070/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com