Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python追加(+;=)将整个字符串替换为最后一个字符_Python - Fatal编程技术网

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。