2017-05-18 3 views
0

의 문자 집합의 교집합을 찾을 방법이 내가 편집하려고 코드입니다하지만 난 방법을 모른다 :파이썬 3.x를이 - 두 문자열

var1= 'ABC' 
var2= 'DBC' 
match= any(x in var1 for x in var2) 
if any(x in var1 for x in var2): 
    print("var1 in var2") 
    print("The letters that are in var1 and var2 are", match) 
else: 
    print("No results.") 

내가 그 코드 I를 실행하면 나를 위해 쓸모가 이러한 결과를 얻을 :

var1 in var2 
The letters that are in var1 and var2 are BC 

ABD I에 VAR1을 변경한다면 : 내가 할 수있는 프로그램이다 원하는 것은

var1 in var2 
The letters that are in var1 and var2 are True 

결과가 다음과 같아야합니다.

var1 in var2 
The letters that are in var1 and var2 are BD 

P.S. 알파벳 순서로 편지를 인쇄하기를 원합니다. 그래서 결과는 The letters that are in var1 and var2 are BD이고 The letters that are in var1 and var2 are DB이 아닐 수 있습니다.

대단히 감사합니다. 진심으로 감사드립니다.

답변

2
var1= 'ABC' 
var2= 'DBC' 
match= [x for x in var1 if x in var2] 
if match: 
    print("var1 in var2") 
    match_str = ''.join(sorted(match)) 
    print("The letters that are in var1 and var2 are %s." % match_str) 
else: 
    print("No results.") 

이 인쇄 :

var1 in var2 
The letters that are in var1 and var2 are BC. 

기본적으로 나는 목록이 sorted 기능을 사용하여 정렬, if match으로 비 비어있는 경우 확인, 동일있는 요소를 찾기 위해 지능형리스트를 사용하고 있습니다 그리고 각 요소를 ''.join (문자 사이에 공백을 넣지 않으므로 빈 문자열 ''에 합류)이라는 단일 문자열로 연결합니다.

그런 다음 출력에 쉼표가 표시되지 않게하려면 % 형식 구문을 사용하여 정렬 된 문자를 출력 문장에 삽입하십시오.

+0

나는 –

+0

죄송 고정 된 오타 '에 대한'3 행에 잘못된 구문을 얻을. –

+0

고맙습니다. 정말로 나를 도왔다. –

1

집합 산술을 사용하여이를 수행 할 수도 있습니다. var1 변경

>>> var1 = 'ABC' 
>>> var2 = 'DBC' 
>>> ''.join(set(var1).intersection(set(var2))) 
'CB' 

,

>>> var1 = 'ABD' 
>>> ''.join(set(var1).intersection(set(var2))) 
'BD'