去掉字符串中的重复元素的多种方法

不错的选择

思路
定义空串[],对原字符串进行遍历,一个个追加到空串lst中,如果重复则不添加,
返回新列表,将其转换为 字符串

def func(arg):
    lst = []
    for element in arg:
        if  not element in lst:
            lst.append(element)
        else:
            continue
    Nst = ''.join(lst)
    return Nst

不完美:不能保留原字符串的排列顺序

思路
将字符创排序,然后遍历整个序列,对相邻俩个值比较,如果不相等,
则将第一个元素等添加到一个空列表lst中,如果相等,则continue,
最后将列表lst转换中字符串Nstr

def func_1(arg):
    lst = []
    Mlist = sorted(arg)
    lth = len(Mlist)
    for i in range(lth):
        if i  < lth-1:
            if Mlist[i] != Mlist[i+1]:
                lst.append(Mlist[i])   
            else:
                continue
        else:
            lst.append(Mlist[i])
            
    Nst_1 = ''.join(lst)
    
    return Nst_1

常规

思路
定义3个空列表A,B,C; A放入唯一元素,B放入重复元素,L放入B中重复元素的唯一值, 将A,C合并得到最终列表,再转换为string

def func_2(arg):
    lst_1 = []
    lst_2 = []
    L = []
    for i in arg:
        if arg.count(i) > 1:
            lst_2.append(i)
        else:
            lst_1.append(i)
    for  e in lst_2:
        if  e not in L:
            L.append(e)
    
    Nlst = lst_1 + L
    Ns = ''.join(Nlst)
    return Ns

这个也不错

思路
根据传入的字符串长度,循环读入第i个元素比对i+1之后的所有元素,如果匹配到
则丢弃,如果没有匹配到值则丢入一个空列表。

def func_3(arg):
    lst_2 = list(arg)
    L = [] 
        
    lg = len(arg)
    for i in range(lg):
        if  not lst_2[i] in lst_2[i+1:]:
             L.append(lst_2[i])
        else:
             continue
    
    return ''.join(L)

这个方法很棒

思路:
通过set(集合)去掉重复元素,然后再转换为字符串

def func_4(arg):
    lst = list(set(arg))
    Ns = ''.join(lst)
    return Ns

你可能感兴趣的:(去掉字符串中的重复元素的多种方法)