如果你只是想的se
每個元素比較0
,並替換爲> 0
與0
的那些,那是相當容易:
se = {0 if element > 0 else element for element in se}
或者,如果你想想看:
se = {min(element, 0) for element in se}
您無法通過索引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])
作爲一個側面說明,你爲什麼這樣做'se.update([I] )'而不是隻是'se.add(i)'? – abarnert
「我想比較se([i])> 0,然後重新分配se([i])的值爲0」是什麼意思? –
更重要的是:你是什麼意思「我想比較se([i])> 0」?沒有'se([i])'這樣的東西; 'set's不可調用,也不可轉位,所以我無法猜測你在這裏做什麼。同樣也適用於「重新分配」部分。你想比較什麼> 0,你想分配給0什麼,在什麼情況下,你想分配它? – abarnert