Penso che questo possa essere collegato al set mutable
.Come rimuovere un elemento da un set?
Fondamentalmente, posso rimuovere un elemento da un set utilizzando set.discard(element)
. Tuttavia, set.discard(element)
restituisce None
. Ma mi piacerebbe avere una copia del set aggiornato. Ad esempio, se ho una lista di set, come posso ottenere una copia aggiornata usando le operazioni di comprensione delle liste?
Esempio:
test = [{'', 'a'}, {'b', ''}]
print [x.discard('') for x in test]
print test
tornerà
[None, None]
[set(['a']), set(['b'])]
SOF è un posto così incredibile! Le risposte a @thefourtheye e @roippi funzionano bene! La risposta @roippi ha un vantaggio in termini di velocità e può avere anche un'applicazione più ampia. Ho accettato @thefourtheye risposta solo perché funziona comodamente nel mio caso, in cui l'elenco dei set viene generato da un elenco di liste. Quindi posso codificare semplicemente '[set (x) - {''} per x nella lista]'. Ma molte grazie a tutti e due! –
Nel caso in cui la comprensione dell'elenco si traduca in un elenco indipendente di set, senza alcuna modifica ai set originali, o dovrebbe modificare l'originale? Se si desidera modificare l'originale, è meglio non usare affatto la comprensione di una lista; un ciclo 'for' è più adatto. – user2357112
@ user2357112 Mi piacerebbe modificare l'originale (non importa in realtà ma dal momento che il set di dati è grande, non voglio creare copie). Qual è la ragione per cui "for loop" è meglio della comprensione delle liste in questo caso? –