Ошибка пересечения набора Python для начинающих - PullRequest
1 голос
/ 14 февраля 2012
rare = (["word1","word4","word5"])
freq = (["word1","word2","word3"])
unique = rare.intersection(freq)
print unique

ошибка: AttributeError: у объекта «список» нет атрибута «пересечение»

Правильно ли я создаю наборы? Они похожи на примеры в документации - но я не могу использовать обычные методы set для них.

Каков правильный синтаксис для создания множеств, если это списки?

Ответы [ 3 ]

6 голосов
/ 14 февраля 2012

Таким образом, вы создаете не наборы, а обычные списки. Используйте функцию set:

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

Может быть, вы путаете наборы с кортежами. Кортеж создается с выражениями в скобках, но вы должны указать хотя бы запятую:

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

Кортежи похожи на неизменяемые списки, но они не являются множествами.

3 голосов
/ 14 февраля 2012

Вы хотите это:

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

Обратите внимание, что синтаксис для заданных литералов был перенесен в Python 2.7.

2 голосов
/ 14 февраля 2012

Если вы используете 2.7, это более питонический синтаксис для пересечений с использованием операторов набора :

>>> 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'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...