我编写了一个简单的脚本来打印给定字符串中的唯一字符。
每个唯一字符都附加到输出中,但最后只打印附加的最后一个字符。
input = "1234a4321b1234c4321d"
output= ""
for x in input:
if x not in output:
output += x
print x
我希望这能打印出来:1234abcd
但它只打印:d
我究竟做错了什么?
我编写了一个简单的脚本来打印给定字符串中的唯一字符。
每个唯一字符都附加到输出中,但最后只打印附加的最后一个字符。
input = "1234a4321b1234c4321d"
output= ""
for x in input:
if x not in output:
output += x
print x
我希望这能打印出来:1234abcd
但它只打印:d
我究竟做错了什么?
你应该打印output
,而不是x
。
另外,请注意,您的方法不会只打印唯一字符,因为每个字母将在第一次出现时添加。(1
第一次检查时,它还output
没有...)
你确实想打印output
而不是x
>>> input = "1234a4321b1234c4321d"
>>> output = ""
>>> for x in input:
... if x not in output:
... output += x
...
>>> print output
1234abcd
>>>
但这也不是你所追求的。至少如果您希望您的输出是 acbd 正如您在原始问题中提到的那样。
所以,也许你想检查数字
>>> 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))