2012-05-25 2 views
-1

나는 3 개의 주어진 문자열의 모든 공통 문자를 찾는 코드를 작성했습니다. 아쉽게도 찾을 수없는 몇 가지 오류가 있습니다. 누군가가 그런 코드가 어떻게 생겼는지 말할 수 있다면, 나는 그것을 고맙게 생각합니다.문자열 집합의 모든 일반 문자를 찾으려면 어떻게해야합니까?

도움 주셔서 감사합니다.

+0

일반 문자? 문자 "a"는 문자열 x, y 및 z에 있습니까? –

+2

코드 리뷰를 찾고 있다면 http://codereview.stackexchange.com/이 더 적절할 것입니다 – dm03514

+1

3d 그리드가 무엇을 나타낼 수 있는지 설명해 주시겠습니까? 알고리즘의 기본 아이디어를 이해하는 데 어려움을 겪고 있습니다. – Kevin

답변

7
def commonLetters(*strings): 
    return set.intersection(*map(set,strings)) 

데모 : - ". 배터리 포함"파이썬은 읽기, 그리고 대부분의 기능에 대한 표준 라이브러리를 제공하는 일을 간단하게 설계되었습니다

>>> commonLetters('abcdef', 'defg', 'def', 'ef') 
{'e', 'f'} 
+4

'common_letters' ([PEP8] (http://www.python.org/dev/peps/pep-0008/#function-names)) – juliomalegria

+2

또는'return set (strings [0]). intersection (* strings [ 1 :])' – iruvar

2

그건 그 이유는 당신이하고 싶은 일을하는 Pythonic 방법은 설정된 교차점을 사용하는 것입니다.

>>> a = 'foobar' 
>>> b = 'bar' 
>>> c = 'barbaz' 
>>> common_letters = set(a) & set(b) & set(c) 
>>> print(list(common_letters)) 
['a', 'r', 'b'] 

확실히 다른 방법으로 세트를 구성 할 수 있지만 KISS 원리가 확실히 적용됩니다.

+1

문자열 a, b 및 c를 목록으로 변환 할 필요가 없습니다. 이미 반복 가능한 시퀀스입니다. 그렇지 않으면 좋은 대답, IMHO. – martineau

+0

@martineau 네 말이 맞아. 나는 더 나은 명확성을 위해 불필요한 list() 호출을 제거했다. –

관련 문제