初级python集合交集

2024-09-28 23:28:41 发布

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

rare = (["word1","word4","word5"])
freq = (["word1","word2","word3"])
unique = rare.intersection(freq)
print unique

错误:attribute error:“list”对象没有属性“intersection”

我没有正确地创建集合吗?它们看起来像文档中的示例——但我似乎不能对它们使用普通的set方法。

如果集合是列表,那么创建集合的正确语法是什么?


Tags: 对象错误attributeerrorlistuniqueprintfreq
3条回答

如果您使用的是2.7,那么对于使用set operators:的交叉口来说,这是更为python的语法

>>> import sys; print sys.version
2.7.1+ (r271:86832, Apr 11 2011, 18:13:53) 
[GCC 4.5.2]
>>> rare = {"word1", "word4", "word5"}
>>> freq = {"word1", "word2", "word3"}
>>> rare & freq
set(['word1'])

你想要这个:

rare = {"word1", "word4", "word5"}
freq = {"word1", "word2", "word3"}
unique = rare.intersection(freq)
print(unique)

请注意,set literals的语法早在Python 2.7中就已经被移植了。

这样你就不需要创建集合,只需要创建常规列表。使用set函数:

rare = set(["word1","word4","word5"])
freq = set(["word1","word2","word3"])

也许你把集合和元组混淆了。创建的元组的表达式位于括号之间,但必须至少提供逗号:

("this", "is", "a", "tuple")
("anotherone",)

元组就像是不可变的列表,但它们不是集合。

相关问题 更多 >