如何正确地与集合联合
How to properly union with set
我知道任何带有空集的 python 集 union
都会产生它自己。但是当 union
在 for 循环中时,我检测到一些奇怪的行为。
看起来不错
num= set([2,3,4])
emp= set()
print num|emp
>>>set([2, 3, 4])
困惑
s = set()
inp = ["dr101-mr99","mr99-out00","dr101-out00","scout1-scout2","scout3- scout1","scout1-scout4","scout4-sscout","sscout-super"]
for ele in inp:
r = set(ele.split("-"))
print r
s.union(r)
print s
>>>set(['mr99', 'dr101'])
set(['out00', 'mr99'])
set(['out00', 'dr101'])
set(['scout1', 'scout2'])
set(['scout1', 'scout3'])
set(['scout4', 'scout1'])
set(['scout4', 'sscout'])
set(['super', 'sscout'])
set([])
谁能告诉我为什么最后一个集合s是空的?
输出应该是集合中的每个唯一元素吗?
s.union(r)
是一个 new 集合,包含来自 s
和 r
的元素。reference 你需要改变
s.union(r)
到
s = s.union(r)
或者,使用 set.update
.
我知道任何带有空集的 python 集 union
都会产生它自己。但是当 union
在 for 循环中时,我检测到一些奇怪的行为。
看起来不错
num= set([2,3,4])
emp= set()
print num|emp
>>>set([2, 3, 4])
困惑
s = set()
inp = ["dr101-mr99","mr99-out00","dr101-out00","scout1-scout2","scout3- scout1","scout1-scout4","scout4-sscout","sscout-super"]
for ele in inp:
r = set(ele.split("-"))
print r
s.union(r)
print s
>>>set(['mr99', 'dr101'])
set(['out00', 'mr99'])
set(['out00', 'dr101'])
set(['scout1', 'scout2'])
set(['scout1', 'scout3'])
set(['scout4', 'scout1'])
set(['scout4', 'sscout'])
set(['super', 'sscout'])
set([])
谁能告诉我为什么最后一个集合s是空的? 输出应该是集合中的每个唯一元素吗?
s.union(r)
是一个 new 集合,包含来自 s
和 r
的元素。reference 你需要改变
s.union(r)
到
s = s.union(r)
或者,使用 set.update
.