我在使用for循环时得到了空集

时间:2018-09-03 00:16:18

标签: python python-3.x loops for-loop set

我知道这一定是非常基本的东西,但是我不知道为什么我会一直空着。为了不弄空集,我该怎么办?

s=set()
for a in [(1,2),(1,3),(1,2)]:
       b=[]
       for j in range(len(a)-1):
           b.append(a)
       s.union(b)
print(s)

我得到:

 s=([])

但是我想要的结果是

{(1,2),(1,3)}

我知道还有另一种采用联合的方式,但是我希望使用此for循环来实现。

3 个答案:

答案 0 :(得分:3)

尝试一下:

s = set()
s = s.union([(1,2),(1,3),(1,2)])

set.union不会修改集合,因此您需要保存结果

如果您要像在帖子中那样使用for循环,请确保保存并集的结果:s = s.union(b)

答案 1 :(得分:2)

函数union返回一个集合,该集合是sb的并集,您应该将代码更改为:

s = set()
for a in [(1, 2), (1, 3), (1, 2)]:
    b = []
    for j in range(len(a) - 1):
        b.append(a)
    s = s.union(b)
print(s)

输出

{(1, 2), (1, 3)}

您也可以使用update函数:

s.update(b)

输出

{(1, 2), (1, 3)}

答案 2 :(得分:0)

如果要合并两个非空集,则仅需要union方法。由于您从一个空集开始,因此可以简单地使用set构造函数:

s = set([(1,2),(1,3),(1,2)])

s将变为:

{(1, 2), (1, 3)}