2017-10-08 1 views
0

저는 파이썬을 처음 접했습니다.파이썬에서 행마다 반복이 있는지 확인하십시오.

항목이 반복되는지 여부를 식별하려고합니다.

내가있는 경우 :

x = [a, b, c, d, d, d, e, f, f] 

나는 좀하고 싶습니다 :

rep = [no, no, no, no, yes, yes, no, no, yes] 

나는 for 루프이 작업을 수행 할 수 있습니까? 아니면 함수를 적용할까요? 모든 안내를 받으실 수 있습니다. 재생 가능한 객체로 시작

답변

2

요소가 세트에있는 경우에 기반 조건을 당신은 본 적이 무엇을 추적하고 추가 할 세트를 사용

x = ['a', 'b', 'c', 'd', 'd', 'd', 'e', 'f', 'f'] 
is_dupes = [] 
seen = set() 

for e in x: 
    if e in seen: 
     is_dupes.append('yes') 
    else: 
     is_dupes.append('no') 
     seen.add(e) 

is_dupes 
# ['no', 'no', 'no', 'no', 'yes', 'yes', 'no', 'no', 'yes'] 
2

, 당신은 아니오/예, 단순히

>>> ['yes' if x[:i+1].count(el)>1 else 'no' for i,el in enumerate(x)] 
['no', 'no', 'no', 'no', 'yes', 'yes', 'no', 'no', 'yes'] 
을로 논리 값을 설정하려는 경우 list-comprehension을 사용하고

>>> [x[:i+1].count(el)>1 for i,el in enumerate(x)] 
[False, False, False, False, True, True, False, False, True] 

을 그리고 수

>>> x = ['a', 'b', 'c', 'd', 'd', 'd', 'e', 'f', 'f'] 

+0

내가 실수를했다. 실제 오류가 있습니다 :'KeyError : '레벨 보너는 이름 (없음)과 동일해야합니다.' '. 'bor'은 시퀀스의 항목 중 하나입니다. 나는 다음과 같은 일을하고있다 : 'datahitword ['misread '] = [datahitword ['clean_word ']]'[i + 1] .count (el)> 1 for enumerate (datahitword [ 'clean_word'])] ' –

+0

@ 다니엘 바르가스. 방법? 어떤 오류가 있습니까? * python 2.7 및 3.6을 사용하여 예제를 테스트했습니다. * – Kanak

+0

@ Psidom 응답을 사용했습니다. 하지만 여전히 당신을 탐구하고 싶습니다. 항상 여러 전략을 가지고있는 것이 좋습니다. 나는 열거했다 (datahitword [ 'clean_word'])]', i에 대해 dup = [] dup = [datahitword [ 'clean_word'] [: i + 1] .count (el) : KeyError : '레벨 보너스는 이름과 동일해야합니다. (None)' ' –

0

이 숙제에 대한 URL은 무엇입니까?

#! /usr/bin/env python3 


def y_or_n(bool): 
    return 'yes' if bool else 'no' 


def rep(xs): 
    seen = set() 
    ret = [] 
    for x in xs: 
     ret.append(y_or_n(x in seen)) 
     seen.add(x) 
    return ret 

if __name__ == '__main__': 
    print(rep('a b c d d d e f f'.split())) 
+0

숙제가 아니라 많은 조작이 필요한 데이터 세트를 작성 중입니다. –

1

물론 목록의 연속 된 항목 쌍을 반복하고 각 쌍의 두 항목이 같은지 확인해야합니다. 이 작업을 수행하는 데 사용할 수있는 편리한 기능이 pairwise()이며, 그 구현은 itertools package documentation으로 주어 지거나 more-itertools library에서 바로 사용할 수 있습니다. 이처럼 사용하십시오 :

for item1, item2 in pairwise(rep): 
    # choose yes or no 

사실, 지능형리스트에 이러는 당신이 바로 처음부터리스트로 결과를 구축하는 방법을 권 해드립니다.

[ (choose yes or no) for item1, item2 in pairwise(rep)] 

그럼 당신은 동일하게하기 전에 첫 번째 요소는 아무 상관이 없기 때문에 전면에 'no' 여분을 고수해야합니다.

관련 문제