필자는 반복 할 필요가있는 파이썬 세트를 가지고 있으며 각 요소에 대해 제약 조건을 만족하는지 확인하고, 그렇다면이를 제거하고 다른 비어있는 비어있는 세트에 추가하십시오. 버퍼에 추가 한 다음 루프가 완료된 후 버퍼를 반복하고 해당 내용을 집합에서 제거 할 수 있지만이를 수행하는 더 좋은 방법이 있어야합니다. 여기 java의 iterator.remove()는 어떻게 python으로 변환됩니까?
내가 할 노력하고있어 무엇 :이 작동하지 않습니다for elem in S:
if (P(elem)):
S.remove(elem)
T.add(elem)
. 여기
작동하지만 부정한 것 수정입니다 :B = set()
for elem in S:
if (P(elem)):
B.add(elem)
T.add(elem)
for elem in B:
S.remove(elem)
편집 : 가장 좋은 해결책이 보인다 가 될 : 목록은
for elem in S.copy():
if (P(elem)):
S.remove(elem)
T.add(elem)
, 나는 당신이 다루고있는 추측 될 문제가되지 않습니다 * list *는 단지 반복 가능한 것이 아니라 일반적으로 직접적으로 주소 지정 가능하거나 변경할 수있는 것이 아닙니다. –
이 기능을 "파티션"이라고합니다. 그러나, 작성하기가 상당히 쉽지만 그러한 표준 파이썬 구조는 없습니다. http://stackoverflow.com/questions/4578590/python-equivalent-of-filter-getting-two-output-lists-ie-partition-of-a-list를 참조하십시오 (일부는 지연 반복자를 허용하고 다른 일부는 평가를 강제합니다) –