Python 制作列表理解不起作用的筛选列表

Python 制作列表理解不起作用的筛选列表,python,syntax,list-comprehension,Python,Syntax,List Comprehension,基本上,给定一个字母列表l,我想过滤一个字母列表,以便在新列表中只包含一个上述字母的实例: l2 = [] for i in l: if i not in l2: l2.append() 我想使用列表理解,所以我写道: l2 = [i for i in l if i not in l2] 但它返回一个空l2。我刚刚开始学习如何使用列表理解,我有点累了,所以我看不出我在哪里或是否做错了:(这里的列表理解无法工作,因为只有在完成所有列表理解的工作后,l2才会更新,不知道列

基本上,给定一个字母列表l,我想过滤一个字母列表,以便在新列表中只包含一个上述字母的实例:

l2 = []
for i in l:
    if i not in l2:
        l2.append()
我想使用列表理解,所以我写道:

l2 = [i for i in l if i not in l2]

但它返回一个空l2。我刚刚开始学习如何使用列表理解,我有点累了,所以我看不出我在哪里或是否做错了:(

这里的列表理解无法工作,因为只有在完成所有列表理解的工作后,
l2
才会更新,不知道列表comp的中间状态

您需要的只是每个字母的一个唯一实例,换句话说:a
set

l2 = set(l)
l2 = list(set(l)) # if you really want a list at the end

列表理解在这种情况下不起作用,因为它在变量的保存状态下起作用。 因此,早期的第二语言是空白的,在理解时会考虑这种状态。 因此,输出将包含所有元素。 我能注意到的是你试图得到“l”的独特元素

你可以用

l2 = set(l) # if rlist is required you can type cast it back to list like, l2 = list(set(l))

列表理解的问题在于它依赖于列表l2,而列表l2本身就是列表理解的目标

有时,列表理解不是最好的方法,即使它是一个很好的工具

出于您的目的,最好将列表l转换为一个集合(没有重复项),然后再转换回一个列表,该列表可以分配给列表l2:

l2 = list(set(l))

我得到了一个包含所有元素的l2,而不是空的。你现在可能会考虑接受一个答案或评论,以获得详细信息;)以奖励那些为你花费时间的人;)你如何奖励帮助过你的人?(我完全是Stack to xD的初学者)答案旁边有一个绿色的勾号,你只能接受一个,对你来说是最好的。你也可以投票(你是否有足够的声誉)