Python中不支持集合的增广加法吗?

发布于 2024-11-23 21:15:03 字数 275 浏览 1 评论 0 原文

在Python集合中,为什么支持增加删除元素但不支持添加?

例如,如果 s 是一个可变集合:

s = set(['e', 'd', 'h', 's'])

s -= set('ds') 给出 s = set(['e', 'h'])

但这不适用于 s += set('pk') 并导致 TypeError

In the Python sets, why augmented removal of elements are supported but addition is not supported?

For example if s is a mutable set:

s = set(['e', 'd', 'h', 's'])

s -= set('ds') gives s = set(['e', 'h'])

but this does not work for s += set('pk') and results in TypeError.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

暮光沉寂 2024-11-30 21:15:03

您想要执行的操作的正确语法是

s |= set('ds')

对于集合,二元运算符 |&^ 用于并集、交集和分别为对称差。我猜 + 不被认为是有效的集合操作的原因是因为它没有被使用 在集合论中,而 - 是。

这三个二元运算符处理整数的方式和处理集合的方式之间有很好的对称性:

set("1234")  & set("1456") == set(['1', '4'])
bin(0b111100 & 0b100111)   == '0b100100'
#     1234       1  456          1  4

set("14")    | set("456")  == set(['1', '5', '4', '6'])
bin(0b100100 | 0b000111)   == '0b100111'
#     1  4          456          1  456

set("14")    ^ set("456")  == set(['1', '5', '6'])
bin(0b100100 ^ 0b000111)   == '0b100011'
#     1  4          456          1   56

The correct syntax for what you want to do is

s |= set('ds')

For sets, the binary operators |, & and ^ are used for union, intersection and symmetric difference, respectively. I guess the reason + is not considered a valid set operation is because it is not used in set theory, while - is.

There's a nice symmetry between the way these three binary operators work on integers and the way they work on sets:

set("1234")  & set("1456") == set(['1', '4'])
bin(0b111100 & 0b100111)   == '0b100100'
#     1234       1  456          1  4

set("14")    | set("456")  == set(['1', '5', '4', '6'])
bin(0b100100 | 0b000111)   == '0b100111'
#     1  4          456          1  456

set("14")    ^ set("456")  == set(['1', '5', '6'])
bin(0b100100 ^ 0b000111)   == '0b100011'
#     1  4          456          1   56
时光匆匆的小流年 2024-11-30 21:15:03

您可以使用 s | set('ds'),假设s = set('edhs')

You could use s | set('ds'), assuming s = set('edhs')

撩心不撩汉 2024-11-30 21:15:03

首先,Python 教程是您最好的朋友,包含您需要的所有信息。您可以查看以下链接以获取有关 python 设置类型的更多信息: http://docs.python.org/release/2.7/library/stdtypes.html?highlight=set.difference#set-types-set-frozenset

您可以使用 set 联合方法这个目的:

union(other, ...) 与 set | 相同其他| ...

返回一个新集合,其中包含该集合中的元素以及所有其他元素。
baseSet = set('abcd')
baseSet = baseSet.union('zx')

或使用 set 更新方法< /a>:

update(other, ...) 与 set |= other | 相同...

更新集合,添加所有其他集合中的元素。
baseSet = set('abcd')
baseSet.update('zx')

First of all python tutorial is your the very best friend and contains all information you need. You can take a look at the following link to get more info about python set types: http://docs.python.org/release/2.7/library/stdtypes.html?highlight=set.difference#set-types-set-frozenset

You can use set union method for this purpose:

union(other, ...) is the same as set | other | ...

Return a new set with elements from the set and all others.
baseSet = set('abcd')
baseSet = baseSet.union('zx')

Or using set update method:

update(other, ...) is the same as set |= other | ...

Update the set, adding elements from all others.
baseSet = set('abcd')
baseSet.update('zx')
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文