如果set.add()函数和列表在Python中用于相同的目的?

时间:2014-06-10 12:53:16

标签: list python-2.7 set

正如标题中提到的那样,如果它们都用于同一目的吗? 大多数时候我会选择使用list,而且我不知道何时是使用set.add()函数的更好时机。

我尝试了他们两个并给我完全相同的结果...... 个人觉得名单更好。你们觉得怎么样?

a = set()
a.add('a1')
a.add('a2')
a.add('a3')
for ele in a:
    print ele

b = []
b.append('a1')
b.append('a2')
b.append('a3')
for ele in b:
    print ele

请告知......

1 个答案:

答案 0 :(得分:2)

就一般数据结构而言,集合结构往往只允许每个值的一个元素,而列表可能只有一个以上

换句话说,执行两次的伪代码set.add(7)会导致包含单个元素7的集合(如果它考虑将相同的元素添加两次以使其无效,则会出错)。

使用列表而不是集合将导致两个元素,均为7。


对于Python,具体来说,向集合添加重复项不是错误,但它仍然明显只允许其中一个:

>>> s = set()
>>> s.add(1)
>>> s.add(1)
>>> s.add(2)
>>> s
set([1, 2])

另一方面,该列表允许倍数:

>>> l = list()
>>> l.append(1)
>>> l.append(1)
>>> l.append(2)
>>> l
[1, 1, 2]

没有看到差异的原因仅仅是因为你在列表中添加了三个独特的项目并进行了设置。在这种情况下,他们的行为是一样的。添加重复项时,行为只会出现差异。