아주 조심스럽게 통제하지 않는 한 "거리에서의 행동"/ 돌연변이/부작용이있는 것이 형편이 아닙니다.
즉, 다음과 같이 명령형 언어를 사용하면 실제로 그렇게 할 수 있습니다.() getMarriedPeople에 액세스 상각 O (1) 시간이 아닌 O (1) 시간을 실행
MARRIED_SET = set()
def updateMarriedSet(changedPerson):
if hasattr(changedPerson,'married') and changedPerson.married==Person.MARRIED:
MARRIED_SET.add(changedPerson)
else:
MARRIED_SET.discard(changedPerson)
class Person(object):
...
@property
def married(self):
"""The person is married"""
return self._married
@married.setter
def married(self, newStatus):
self._married = newStatus
updateMarriedSet(self)
@married.deleter
def married(self):
del self._married
updateMarriedSet(self)
난이, 아마도 보장하기 위해 유용 할 수 있습니다 상상할 수 : 여기에서 우리는 파이썬의 [property getters and setters]를 사용합니다.
사전을 표시하는 대신 변경 사항이있을 때 사람들을 삽입하고 제거 할 수있는 세트를 사용할 수 있으며 같은 노력으로 O (1) 명의 결혼 한 사람이 있습니다. –
@AlejandroPiad : 당신이 무엇을 제안하는지 잘 모르겠습니다. 그것은 이미 O (1)이었다. OP가 목록을 원한다는 사실을 언급하지 않는 한 (집합/명사가 아니라 둘 다 목록보다 합리적입니다.) 어쨌든 조금 수정했습니다. – ninjagecko
내가 언급 한 것은 dict을 업데이트하는 것이 매번 O (1)이지만, dict은 매번 결혼 한 것이 아니라 모든 사람을 포함한다는 것입니다. 기혼자들에게만 반복하기를 바란다. 나는 그가 원하는 것을 바라고 있으며, 모든 사람들을 반복해야한다. 새 편집 내용은 내가 염두에 두었던 것입니다. 미안 처음 코멘트에서 자신을 설명하지 않았다면. –