python - 如何在Python中从字符串中就地删除重复项?

标签 python string duplicates conditional-statements index-error

我正在尝试实现一种就地算法来从 Python 中的字符串中删除重复项。

str1 = "geeksforgeeks"
for i in range(len(str1)):
    for j in range(i+1,len(str1)-1):
         if str1[i] == str1[j]:  //Error Line
                      str1 = str1[0:j]+""+str1[j+1:]



print str1

在上面的代码中,我尝试用空格替换重复的字符。但我在 if str1[i] == str1[j] 处得到 IndexError: string index out of range 。我是否错过了什么或者这不是正确的方法?

我的预期输出是:geksfor

最佳答案

您只需一个集合和一个理解就可以完成所有这些。不需要让事情复杂化。

str1 = "geeksforgeeks"

seen = set()
seen_add = seen.add
print(''.join(s for s in str1 if not (s in seen or seen_add(s))))
#geksfor

"Simple is better than complex."

~ See PEP20

编辑

虽然上面的内容比您的答案更简单,但它是 removing duplicates from a collection 的最高效的方式。更简单的解决方案是使用:

from collections import OrderedDict
print("".join(OrderedDict.fromkeys(str1)))

关于python - 如何在Python中从字符串中就地删除重复项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54965737/

相关文章:

python - Django 通用关系不起作用

python - 列表的查找方式

python - Django开发: Chrome warns "Change Password"

java - 将字符串从 Activity 传递到服务

java字符串编译

java - 如何检查 Java 8 Streams 中是否存在任何重复项?

python - 在Python中从第n行读取大型CSV文件(不是从头开始)

C:试图颠倒矩阵中 10 个单词的顺序

python - 如何根据另一个 DataFrame 的条件从多索引 Dataframe 中选择重复子集

vba - Excel VBA 合并重复行并添加数量