1

我对套装有一个小问题。所以我有一个名为s的集合

s = set(['Facebook', 'Yahoo', 'Gmail'])

我有一个名为l的列表

l = ['Yahoo', 'Google', 'MySpace', 'Apple', 'Gmail']

如何检查我的列表l中 set s中的内容?

我也尝试过这样做,但是 Python 给了我一个错误:

TypeError: 'set' object does not support indexing 

那么如果集合对象不支持索引,我该如何编辑集合对象的每个部分呢?

谢谢。

4

3 回答 3

2

您测试交叉点:

s.intersection(l)

演示:

>>> s = set(['Facebook', 'Yahoo', 'Gmail'])
>>> l = ['Yahoo', 'Google', 'MySpace', 'Apple', 'Gmail']
>>> s.intersection(l)
set(['Yahoo', 'Gmail'])

您也可以使用循环遍历您的集合for,但这几乎没有那么有效。

于 2013-07-19T10:36:57.247 回答
1
print s.intersection(l)

那是更有效的方法。在你的情况下:

s = set(['Facebook', 'Yahoo', 'Gmail'])
l = ['Yahoo', 'Google', 'MySpace', 'Apple', 'Gmail']
print s.intersect(l)

这是效率较低的方法:

resset = []
for x in s:
    if x in l:
        resset.append(x)
print resset

PS。而不是像这样声明一个集合:

s = set(['Facebook', 'Yahoo', 'Gmail'])

试试这个:

s = {'Facebook', 'Yahoo', 'Gmail'}

只是为了节省一些时间:)

于 2013-07-19T10:38:59.850 回答
0

为什么不试试这个作为你的第一个问题

[x for x in s if x in l]

对于第二个问题,我不明白您到底要做什么,但我认为只需一个带有项目的简单 for 循环就可以解决问题,或者如果您必须需要索引,您可以使用iter(s)或使用enumerate(s) (认为那些不会是索引)

于 2013-07-19T11:30:28.640 回答