首页 > 解决方案 > 如何删除嵌套在列表中的字符?

问题描述

我得到了一个示例字符串AABCAAADA。然后我把它分成 3 个部分:AAB, CAA, ADA.
我已将这 3 个元素嵌套到一个列表中。在每个部分中,我应该检查是否存在重复字符并删除重复字符。我知道字符串是不可变的,但是有什么技巧可以做到这一点吗?

下面是我尝试过的示例方法,但我无法使用 del 和 pop 方法删除该重复字符。

s='AABCAAADA'
x = int(input())
l=[]
#for i in range(0,len(s),x):
for j in range(0,len(s),3):
    l.append(s[j:j+3])

j=0
for i in range(0,len(s)//x):
    for j in range(0,len(l[j])-1):
        if(l[i][j] == l[i][j+1]):
            pass
          #need to remove the (j+1)th term if it is duplicate

输出应该是AB, CA, AD

删除嵌套列表中的重复字符

标签: python-3.xcharacternested-listsdel

解决方案


from functools import reduce
l = ['AAB','CAA','ADA']
print([''.join(reduce(lambda a, b: a if b in a else a + b, s, '')) for s in l])

或者,对于 Python 3.6+:

print([''.join({a: 1 for a in s}) for s in l])

两个输出:

['AB', 'CA', 'AD']

推荐阅读