这是我的代码,我定义了一个空集,我想比较
se([i]) > 0
,然后重新分配se([i])
to的值0
。我无法做到这一点,因为se([i])
它是一个集合,无法与 int 进行比较。请帮助。我是 python 编程的新手。
se =set()
se.update([8])
print (se)
for i in range (10):
se.update([i])
print type(se)
print len(se)
print se
如果您只是想比较 to 的每个元素se
,并用0
替换那些,那很容易:> 0
0
se = {0 if element > 0 else element for element in se}
或者,如果您考虑一下:
se = {min(element, 0) for element in se}
您不能通过 indexing 来做到这一点se[i]
,因为集合不可索引,因为集合(数学和 Python)的全部意义在于它们是无序的。而且您绝对不能通过调用来做到这一点se([i])
,因为您set
不是函数,也不是其他可调用(类似函数)的东西。如果你真的想通过就地变异来做到这一点,你可以:
for element in se.copy():
if element > 0:
se.remove(element)
se.add(0)
(注意se.copy()
那里——你不能在迭代集合时改变它的形状,所以你需要迭代它的一个副本。)
同时,集合的全部意义在于它是无序的,这意味着0
多次添加与添加一次完全相同。所以:
>>> se = { -3, -2, -1, 0, 1, 2, 3 }
>>> print se
set([0, 1, 2, 3, -1, -3, -2])
>>> se = {min(element, 0) for element in se}
>>> print se
set([0, -2, -3, -1])
或者,使用您的代码(print
为简洁起见,删除了一些额外的语句):
>>> se =set()
>>> se.update([8])
>>> print (se)
set([8])
>>> for i in range (10):
... se.update([i])
>>> print se
set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> se = {min(element, 0) for element in se}
>>> print se
set([0])