Myślę, że może to być związane z zestawem będącym mutable
.Jak usunąć element z zestawu?
Zasadniczo mogę usunąć element z zestawu przy użyciu set.discard(element)
. Jednak samo set.discard(element)
zwraca None
. Ale chciałbym dostać kopię zaktualizowanego zestawu. Na przykład, jeśli mam listę zestawów, w jaki sposób można wygodnie pobrać zaktualizowaną kopię za pomocą operacji listowania?
Próbka:
test = [{'', 'a'}, {'b', ''}]
print [x.discard('') for x in test]
print test
powróci
[None, None]
[set(['a']), set(['b'])]
SOF jest takie niesamowite miejsce! Obie odpowiedzi @thefourtheye i @roippi działają ładnie! Odpowiedź @roippi ma przewagę prędkości i może mieć szersze zastosowanie. Zaakceptowałem odpowiedź @freaks tylko dlatego, że działa ona wygodnie w moim przypadku, gdy lista zestawów jest generowana z listy list. Mogę więc kodować po prostu '[set (x) - {''} dla x na liście]'. Ale wielkie dzięki dla was obojga! –
Czy zrozumienie listy powinno prowadzić do niezależnej listy zestawów, bez modyfikacji oryginalnych zestawów, czy też powinno zmodyfikować oryginał? Jeśli chcesz zmodyfikować oryginał, najlepiej nie używać ze zrozumieniem listy; pętla 'for' jest bardziej odpowiednia. – user2357112
@ user2357112 Chciałbym zmodyfikować oryginał (nie ma to znaczenia, ale ponieważ zbiór danych jest duży, nie chcę tworzyć kopii). Jaki jest powód, dla którego "pętla" jest w tym przypadku lepsza niż rozumienie list? –