2013-05-16 4 views
0

주어진 문자열에서 고유 한 문자를 인쇄하는 간단한 스크립트를 작성했습니다.python append (+ =)는 전체 문자열을 마지막 문자로 바꿉니다

각 고유 문자가 출력에 추가되지만 끝에는 마지막에 추가 된 문자 만 인쇄됩니다. 1234abcd

을하지만에만 인쇄는 다음과 같습니다 :

input = "1234a4321b1234c4321d" 

output= "" 

for x in input: 
    if x not in output: 
     output += x 

print x 

나는이 인쇄에 기대 라

내가 잘못 뭐하는 거지?

+2

에 대한 그의 의견에 아시에르 방법 당신은'output'를 인쇄해야합니다. 'x'는 루프가 끝나면 항상 마지막 문자가됩니다. – RedBaron

+1

BTW 당신은 ​​순서를 유지하는 한쪽의 라이너'' '.join (set (input))' – RedBaron

+2

를 사용하여 똑같은 일을 할 수 있습니까? – ash

답변

4

x이 아닌 output을 인쇄해야합니다.

또한 처음 문자가 나타날 때마다 고유 한 문자 만 인쇄됩니다.

+0

달콤한 좀비 예 수! 내가 그랬다고 믿을 수 없어 ... 낮잠이 필요해. 고마워요, 선생님! – ash

+0

고유 한 문자가 아닌 이유는 무엇입니까? 각 문자는 처음 나타날 때만 인쇄되고 반복은 인쇄되지 않습니다. – Barmar

+0

@Barmar - 질문에서 예상되는 출력을보십시오. – MByD

0

당신은 output를 인쇄 할하지 x

>>> input = "1234a4321b1234c4321d" 
>>> output = "" 
>>> for x in input: 
...  if x not in output: 
...    output += x 
... 
>>> print output 
1234abcd 
>>> 

을하지만, 않습니다 (1 먼저 선택하면, 그것은 output에없는 아직 ...)이없는 당신도 후 무엇인지. 원래 질문에서 언급 한 것처럼 출력 결과가 예상되는 경우 적어도

그래서, 아마도 당신은 당신이 원래 무엇인지 일의 set()

>>> output = ''.join(set((i for i in input))) 
>>> output 
'acbd1324' 
마지막

, 더 간결 방법으로 할 수 있습니다 자리

또는 당신 만의 고유 항목을 원하는 경우
>>> output = "" 
>>> for x in input: 
...  if x.isdigit() == False: 
...    output += x 
... 
>>> output 
'abcd' 

를 확인하려면

>>> output = ''.join(set((i for i in input if i.isdigit() == False))) 
>>> output 
'acbd' 

마지막으로 @RedBaron은 원래의 질문

output = ''.join(set(input))

+0

'[',']'대괄호를'set' 생성자에서 제거해야 목록 생성자 대신 생성자 표현식을 사용할 수 있습니다. – jamylak

관련 문제