python list 중복 요소
조회수 1352회
안녕하세요 과제 하던 중 모르던 게 생겨서 질문드려요 ㅠ 지금 board game을 만드는 과제 중인데 장기말이 일정한 규칙에 따라 움직이는 게임이거든요. 그런데 장기말의 위치를 track하는 함수를 만들어야 하는데 골치가 아파서;;
예를 들어 list=[(1,2),(3,4),(4,5),(7,8)(9,10),(4,5),(7,8)(9,10),(4,5),(7,8)(9,10),(4,5),(7,8)(9,10).....] 이런식으로 (4,5),(7,8)(9,10)이 반복되는 list가 있다고 가정해요. 이럴 때는 제가 무슨 요소가 반복되는 줄 아니깐 중복되는 요소를 찾는데 문제가 없지만 만약 제가 list의 element를 정확히 모르고 반복되는 수열(?) 또한 모른다고 했을 때는 어떻게 해야 하나요?
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
댓글의 정영훈님 말씀대로 질문이 애매합니다... 질문을 더 잘 정리해 주셨으면 좋을뻔 했습니다.
반복되는 패턴의 길이가 3이라면 이렇게 짜면 되긴 하겠네요. 반복을 찾는 작업에서는 좌표나, 특정 숫자나 같으니 특정 숫자를 기준으로 작성했습니다.
혹시나 패턴의 길이가 3이 아니라, 임의의 패턴 길이가 나올 수 있다면 더 복잡한 문제가 됩니다.
아래 코드를 잘 응용해 보시면 좋겠네요.
def unique_list(l): x = [] for a in l: if a not in x: x.append(a) return x numbers = [1,2,3,4,5,4,5,4,5] patterns = [] for i, number in enumerate(numbers): if i == len(numbers)-2: break patterns.append(numbers[i:i+3]) unique_patterns=unique_list(patterns) for pattern in unique_patterns: print("{}: {}".format(pattern, patterns.count(pattern)))
댓글 입력