我有以下列表
lst = ['abc-123', 'bc', 'bcd-234', 'def-543', 'ijk-092', 'd']
使用列表理解和过滤器的组合,我可以得到这个结果
lst = ['abc-123', 'bcd-234', 'def-543', 'ijk-092']
我使用的代码lst = [x for x in lst if len(filter(lambda elem: x in elem, lst)) == 1]
我将如何纯粹以列表理解的方式来做,lst = [y for x in lst for y in lst if y in x and x != y]
但是这将返回子字符串['bc', 'bc', 'd', 'd']
由于每个元素都取决于所接受的先前元素,因此您不能使用纯列表理解。
为了说明这一点,此代码有效:
L=[]
for l in lst:
a=[l in x for x in L]
if True in a: continue
L.append(l)
尝试将此循环转换为“纯”列表理解,
L=[]
L=[l for l in lst if True in [l in x for x in L]]
[需要后者L
引用当前外部循环中的更新的L
,不是这种情况。