0

特定の文字列内の一意の文字を出力する簡単なスクリプトを作成しました。

一意の各文字が出力に追加されますが、最後に追加された最後の文字のみが出力されます。

input = "1234a4321b1234c4321d" 

output= ""

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

print x

これが出力されることを期待しています:1234abcd

ただし、印刷されるのは次のとおりです:d

私は何を間違っていますか?

4

2 に答える 2

4

outputではなく、印刷する必要がありますx

また、各文字は最初に表示されたときに追加されるため、メソッドは一意の文字のみを出力しないことに注意してください。(1最初に確認した時はまだ入っoutputていません…)

于 2013-05-16T04:40:28.370 に答える
0

あなたは印刷したいのですが、そうでは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))

于 2013-05-16T04:45:02.703 に答える