2014-11-26 3 views
2

튜플을 저장해야합니다. 튜플을 추가 할 때마다 튜플이 추가되었는지 또는 이미 존재했는지를 알아야합니다. 이미 목록/세트에 존재한다면 루프 내부를 깰 수 있으므로 다른 튜플을 검사 할 필요가 없기 때문입니다 .파이썬 - 특수한 경우 목록에 대 놓고 나열하십시오.

제 생각은 튜플이 이미 있는지 확인하기 위해 추가 작업에서 세트를 사용하는 것이 었습니다. 그러나 반환 값이 없으므로 튜플이 이미 세트에 있는지 확인해야합니다. 그래서 나는 점검 할 것이고 추가 작업은 다시 점검 할 것이다.

어쨌든 자신을 확인해야하므로 목록을 사용하는 것이 더 빠릅니까? 따라서 튜플이 이미 목록에 있는지 확인하고 그렇지 않은 경우에는 튜플을 추가합니다. (

if mytuple in set_of_tuples: 
    break # already added 

set_of_tuples.add(mytuple) 

일정한 시간이 걸리는 일련의 대 회원 테스팅 (O (1)),리스트에 대해 테스트하는 동안 것은 선형 시간이 걸린다 (O N을 :

+0

목록을 반복 할 필요가 없습니다. 튜플이 존재하는지 여부를 연산자에서 확인할 수 있습니다. 그리고 그렇지 않으면 직접 추가 할 수 있습니다. –

답변

4

사용자는 멤버십을위한 세트 및 시험을 사용해야), 목록의 각 요소에 대해 테스트됩니다.

즉, 튜플이 이미 데이터 구조에 있는지 테스트해야하지만 목록에 대한 테스트는 느리고 느려지는 반면 집합에 대한 테스트는 얼마나 많은 시간과 관계없이 항상 동일한 시간이 걸립니다 튜플은 이미 거기에 있습니다.

관련 문제