の各要素を比較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
複数回追加することは、1回追加することとまったく同じです。それで:
>>> 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])