python追加(+;=)将整个字符串替换为最后一个字符
我编写了一个简单的脚本来打印给定字符串中的唯一字符 每个唯一字符都会追加到输出中,但在最后,只打印追加的最后一个字符python追加(+;=)将整个字符串替换为最后一个字符,python,Python,我编写了一个简单的脚本来打印给定字符串中的唯一字符 每个唯一字符都会追加到输出中,但在最后,只打印追加的最后一个字符 input = "1234a4321b1234c4321d" output= "" for x in input: if x not in output: output += x print x 我希望打印:1234abcd 但它只打印:d 我做错了什么 您应该打印输出,而不是x 另外,请注意,您的方法不会只打印唯一的字符,因为每个字母将在第一次
input = "1234a4321b1234c4321d"
output= ""
for x in input:
if x not in output:
output += x
print x
我希望打印:1234abcd
但它只打印:d
我做错了什么 您应该打印
输出
,而不是x
另外,请注意,您的方法不会只打印唯一的字符,因为每个字母将在第一次出现时添加。(当第一次选中
1
时,它不在output
中…您应该打印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 if i.isdigit() == False)))
>>> output
'acbd'
最后,@RedBaron在对原始问题的评论中提供了一种更简单的方法
output=''.join(set(input))
您想打印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 if i.isdigit() == False)))
>>> output
'acbd'
最后,@RedBaron在对原始问题的评论中提供了一种更简单的方法
output=''.join(set(input))
您应该打印output
x
将始终是循环结束后的最后一个字符。您可以使用一行代码执行相同的操作。join(set(input))也会保留其顺序吗?为什么预期输出不包括1234
?您只希望输入中只出现一次的字符?然后你必须计算每个字符的重复次数,最后打印出重复次数为1的字符。你是对的。我已根据您的评论编辑了问题。您应该正在打印输出
x
将始终是循环结束后的最后一个字符。您可以使用一行代码执行相同的操作。join(set(input))也会保留其顺序吗?为什么预期输出不包括1234
?您只希望输入中只出现一次的字符?然后你必须计算每个字符的重复次数,最后打印出重复次数为1的字符。你是对的。我已经根据你的评论编辑了这个问题。可爱的僵尸耶稣!我不敢相信我做了那件事。。。我需要小睡一会儿。谢谢你,好先生!为什么这不是唯一的角色?每个字符只在第一次出现时才打印,重复的字符不会打印。@Barmar-请参阅问题中的预期输出。可爱的僵尸耶稣!我不敢相信我做了那件事。。。我需要小睡一会儿。谢谢你,好先生!为什么这不是唯一的角色?每个字符仅在第一次出现时才打印,不会打印重复项。@Barmar-请参阅问题中的预期输出。您应该从集合构造函数中删除[
,]
方括号,以获得生成器表达式,而不是列表comp。您应该删除[
,]
将构造函数中的方括号设置为具有生成器表达式而不是列表comp。