【问题标题】:If the set.add() function and list serve for the same purpose in Python?如果 set.add() 函数和列表在 Python 中用于相同的目的?
【发布时间】:2014-06-10 12:53:16
【问题描述】:

正如标题中提到的,如果它们都用于相同的目的? 大多数时候我会选择使用列表,我不知道什么时候使用 set.add() 函数比较好。

我尝试了这两种方法并给出了完全相同的结果... 个人觉得list比较好。大家觉得呢?

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

请指教...

【问题讨论】:

  • 查找集合的定义。
  • 好的,感谢@Edgar Arouiounian 的建议。我发现了一个很好的线程来描述这个也add vs list thread

标签: list python-2.7 set


【解决方案1】:

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

换言之,伪代码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]

您没有看到差异的原因仅仅是因为您在列表和设置中添加了三个独特的项目。在这种情况下,它们的行为相同。只有当您添加重复项时,行为才会有所不同。

【讨论】:

  • 谢谢@paxdiablo!你解释得很好!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-13
  • 2013-04-06
  • 1970-01-01
  • 2017-07-25
  • 2019-08-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多