python中的集减法示例

2024-06-09 07:27:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在学习Python中的数据结构课程,关于解决方案的建议包括我不理解的代码

这是一本词典的示例:

vc_metro = {
    'Richmond-Brighouse': set(['Lansdowne']),
    'Lansdowne': set(['Richmond-Brighouse', 'Aberdeen'])
}

建议使用以下代码删除值中的某些元素:

vc_metro['Lansdowne'] -= set(['Richmond-Brighouse'])

我从未见过这样的结构,并将其用于以下基本情况:

my_list = [1, 2, 3, 4, 5, 6]
other_list = [1, 2]
my_list -= other_list

不起作用。我在哪里可以了解有关此推荐策略的更多信息


Tags: 代码数据结构my解决方案建议list课程词典
1条回答
网友
1楼 · 发布于 2024-06-09 07:27:42

不能减去列表,但可以有意义地减去^{}对象Sets是哈希表,有点类似于^{},它只允许对象的一个实例

-=运算符与^{}方法等效,只是它已经就位。它从左操作数中删除两个操作数中存在的所有元素

使用集合的简单示例如下所示:

>>> my_set = {1, 2, 3, 4, 5, 6}
>>> other_set = {1, 2}
>>> my_set -= other_set
>>> my_set
{3, 4, 5, 6}

带有逗号但没有冒号的大括号被解释为集合对象。所以直接构造函数调用

set(['Richmond-Brighouse'])

相当于

{'Richmond-Brighouse'}

请注意,您不能执行set('Richmond-Brighouse'):这会将字符串的所有单个字符添加到集合中,因为字符串是可编辑的

使用-=/difference而不是^{}的原因是,差分只会删除现有的元素,而忽略其他元素。^{}方法对单个元素执行此操作。差异化允许一次删除多个元素

原始行vc_metro['Lansdowne'] -= set(['Richmond-Brighouse'])可以重写为

vc_metro['Lansdowne'].discard('Richmond-Brighouse')

相关问题 更多 >