2017-10-24 7 views
-3

문자열의 일부가 몇 가지 인덱스에서 반복되는 경우 파이썬 목록에서 어떻게 추가 반복을 첫 번째 발생 인덱스로 대체 할 수 있습니까?목록에서 중복 문자열을 찾아 첫 번째 발생 색인으로 바꾸는 방법은 무엇입니까?

예를 들어, 나는 코드를 사용하여 파이썬에서 생성되는 목록을 가지고 있습니다. 출력은 다음과 같습니다. 여기

['False'] 
['AND(a,b)'] 
['AND(a,~b)'] 
['OR(AND(a,~b),AND(a,b))'] 
['AND(~a,b)'] 
['OR(AND(~a,b),AND(a,b))'] 
['OR(AND(~a,b),AND(a,~b))'] 
['OR(AND(~a,b),AND(a,~b),AND(a,b))'] 
['AND(~a,~b)'] 
['OR(AND(~a,~b),AND(a,b))'] 
['OR(AND(~a,~b),AND(a,~b))'] 
['OR(AND(~a,~b),AND(a,~b),AND(a,b))'] 
['OR(AND(~a,~b),AND(~a,b))'] 
['OR(AND(~a,~b),AND(~a,b),AND(a,b))'] 
['OR(AND(~a,~b),AND(~a,b),AND(a,~b))'] 
['OR(AND(~a,~b),AND(~a,b),AND(a,~b),AND(a,b))'] 

문자열의 (a는 b)는 이미 목록에서 2 위 존재, 그래서 어떻게 우리가 가지고 있고 더 기존 문자열을 대체 할 수의 (a, b)는 AND의 인덱스 (A와, b) 상기 교체 후 1

이다 어느 (a, b) 출력

['False'] 
['AND(a,b)'] 
['AND(a,~b)'] 
['OR(AND(a,~b),1)'] 
['AND(~a,b)'] 
['OR(AND(~a,b),1)'] 
['OR(AND(~a,b),AND(a,~b))'] 
['OR(AND(~a,b),AND(a,~b),1)'] 
['AND(~a,~b)'] 
['OR(AND(~a,~b),1)'] 
['OR(AND(~a,~b),AND(a,~b))'] 
['OR(AND(~a,~b),AND(a,~b),1)'] 
['OR(AND(~a,~b),AND(~a,b))'] 
['OR(AND(~a,~b),AND(~a,b),1)'] 
['OR(AND(~a,~b),AND(~a,b),AND(a,~b))'] 
['OR(AND(~a,~b),AND(~a,b),AND(a,~b),1)'] 

모든 중복 된 문자열을 찾아서가 출력

이어야 발견되었다는 인덱스로 대체 한 후되어야
['False'] 
['AND(a,b)'] 
['AND(a,~b)'] 
['OR(2,1)'] 
['AND(~a,b)'] 
['OR(4,1)'] 
['OR(4,2)'] 
['OR(4,2,1)'] 
['AND(~a,~b)'] 
['OR(8,1)'] 
['OR(8,2)'] 
['OR(8,2,1)'] 
['OR(8,4)'] 
['OR(8,4,1)'] 
['OR(8,4,2)'] 
['OR(8,4,2,1)'] 

파이썬에서이 작업을 수행 할 수있는 방법이 있습니까? 나는 그렇게 할 수 없다. 도움을 주시면 대단히 감사하겠습니다. 감사

+0

처음에 이러한 문자열을 생성 한 방법을 변경해야하는 것 같습니다. (지옥, 왜 그들은 항상 문자열입니까?) – user2357112

+0

주어진 입력 수에 대해 가능한 논리 조합을 생성해야합니다. 따라서 7 개의 입력 변수에 대해 가능한 조합은 2^2^7이됩니다. 스크립트가 출력을 생성합니다. –

답변

0
내가 값과 인덱스 사전 ( test_dict)에서 각각의 새로운/고유 한 문자열을 저장하는 것

:

['False'] # this is a new value, so test_dict['False'] = 0 
['AND(a,b)'] # test_dict['AND(a,b)'] = 1 
['AND(a,~b)'] # test_dict['AND(a,~b)'] = 2 

등. 각 목록을 구성 할 때 값이 dict에 있는지 확인하고 올바른 색인으로 바꾸십시오.