python append(+ =)用最后一个char替换整个字符串

时间:2013-05-16 04:38:15

标签: python

我写了一个简单的脚本来打印出给定字符串中的唯一字符。

每个唯一字符都附加到输出中,但最后,只打印附加的最后一个字符。

input = "1234a4321b1234c4321d" 

output= ""

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

print x

我希望打印出来:1234abcd

但它只打印是:d

我做错了什么?

2 个答案:

答案 0 :(得分:4)

您应该打印output,而不是x

另请注意,您的方法不会仅打印唯一字符,因为每次出现时都会添加每个字母。 (首次选中1时,它不在output中......)

答案 1 :(得分:0)

您确实要打印output而不是x

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

但这不是你所追求的。至少如果您希望您的输出在原始问题中提到的那样是非常的。

所以,也许你想要检查数字

>>> output = ""
>>> for x in input:
...     if x.isdigit() == False:
...             output += x
... 
>>> output
'abcd'

或者,如果您只想要唯一的商品,则可能需要set()

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

最后,一种更简洁的方式来做你原来的事情

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

最后,@ RedBaron在对原始问题的评论中提供了一种更简单的方法

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