Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python集合操作:简单脚本在联合或分离后不输出右集合?_Python_Set - Fatal编程技术网

python集合操作:简单脚本在联合或分离后不输出右集合?

python集合操作:简单脚本在联合或分离后不输出右集合?,python,set,Python,Set,上面是简单的代码,我希望union_标记中的元素应该与所有_标记中的元素相同。然而,结果是 设置 union_标记包含两个额外的元素“2”和“4”,我认为这是分割str“24”的结果。 同样,左_标记应该排除元素“24”。然而,结果仍然是“24” 请告诉我原因。我使用Python2.7作为解释器 Set函数接受一个带有可散列项的iterable并将其转换为Set对象,因为当您将字符串24传递给Set函数时,字符串是iterable,所以它会将字符串转换为以下集合: (['24', '02', '

上面是简单的代码,我希望union_标记中的元素应该与所有_标记中的元素相同。然而,结果是 设置

union_标记包含两个额外的元素“2”和“4”,我认为这是分割str“24”的结果。 同样,左_标记应该排除元素“24”。然而,结果仍然是“24”


请告诉我原因。我使用Python2.7作为解释器

Set函数接受一个带有可散列项的iterable并将其转换为Set对象,因为当您将字符串
24
传递给Set函数时,字符串是iterable,所以它会将字符串转换为以下集合:

(['24', '02', '26', '03', '33', '32', '31', '30', '29', '68', '2', '4', '11']) 
最后,这组带有
所有标签的unioin将包含
2
4

如果要将
24
作为一个项目放在一个集合中,可以使用
{}
来创建预期集合:

{'2', '4'}

set(ref\u-tag)
{'2','4'}
set(all\u-tags).联合([ref\u-tag])
set(all\u-tags).差异([ref\u-tag])
,除非你实际上有多个元素或重复,否则set方法对你没有好处。据我理解,所有的标签都是字符串列表。那么,为什么set(所有_标记)的行为方式与ref_标记相同呢?我的意思是,在set操作之后,所有_标记中的元素“34”将变成两个单独的字母“3”或“4”?字符串是否在列表设置中失去可访问性?@YisongZhen:
all_tags
是字符串列表
ref_标记
是一个字符串。使用
ref_tag=['24']
(即包含一个字符串的列表),您将获得预期的结果behavior@Kasramvd在这个主题之后,我的第二个问题是字符串列表['34','29'],在集合操作之后,为什么不变成{'3','4','2','9'}?失去易怒性?我在这里很困惑。@YisongZhen,因为正如我所说的,当你将一个iterable传递给
set
时,它将从这个iterable的项(它将是散列的)中创建一个set对象在本例中,您传递的是一个可iterable的list对象,它的项也是可iterable但可哈希的字符串。如果您传递的是list的列表,您将得到一个TypeError,因为list是不可哈希的。或者,如果你传递了一个元组列表,你没有得到任何错误,因为元组是可散列对象。我理解@Kasramvd所说的话是否仍然正确?
{'2', '4'}
>>> ref_tag = {'24'}
set(['24'])