在Python中删除重复项
到目前为止我的节目在Python中删除重复项,python,Python,到目前为止我的节目 def RemoveDuplicates(text): result=[] used=set() for char in text: if char not in used: used.add(char) result.append(char) return ''.join(result) text=input('Enter some text: ') print(join(re
def RemoveDuplicates(text):
result=[]
used=set()
for char in text:
if char not in used:
used.add(char)
result.append(char)
return ''.join(result)
text=input('Enter some text: ')
print(join(result))
我是Python的初学者,所以这对我来说是一个相当困难的任务。我知道这不符合逻辑,但我在哪里犯了错误?这里有几点:
RemoveDuplicates
,但从未实际调用它set()
,但随后手动检查重复项。根据定义,集合将自动消除重复项RemoveDuplicates()
函数
替换:
text=input('Enter some text: ')
print(join(result))
与:
虽然我不是专家,但我觉得你的功能还行。我认为问题在于你实际上并没有把它叫到任何地方。试着这样称呼它:
print(RemoveDuplicates(text))
除了其他答案之外:如果您使用的是Python2,您需要使用raw\u input
而不是input一个小问题是您忘记调用函数了!
此外,如果您使用的是Python2.x,则需要使用raw\u input
收集用户输入
两个小补丁,您的代码运行良好:
def RemoveDuplicates(text):
result=[]
used=set()
for char in text:
if char not in used:
used.add(char)
result.append(char)
return ''.join(result)
text = raw_input('Enter some text: ')
print(RemoveDuplicates(text))
在示例代码中,您似乎从未调用RemovedUpplicates。好吧,Python没有任何魔力。你不能写随机的东西,希望它能工作。虽然由于他试图从字符串中删除重复的字符,set()不能维护排序顺序。我希望程序要求用户输入一些文本。输出应为删除重复项的文本。输入的文本:“Stackoverflow”,输出:Stackoverflow我很确定集合
正在被手动使用,因为有必要保留原始文本的顺序。我认为如果字符未被使用:
测试仍然是多余的,这正是@jwd试图做到的。@Marius:,执行used.add(char)
,不需要测试,但结果仍需要测试。append(char)
。起初我有点误解。@user1248367:它甚至可以写在一行中,但性能更差。这个函数看起来不错。哦,有很多方法可以把它写得更短——实际上是一两行。但这是家庭作业,你的东西很有用,所以我会把它交上来。:-)原始输入是python 2。Python3.x将其重命名为input
。
def RemoveDuplicates(text):
result=[]
used=set()
for char in text:
if char not in used:
used.add(char)
result.append(char)
return ''.join(result)
text = raw_input('Enter some text: ')
print(RemoveDuplicates(text))