可以将此for循环代码(带有`if not in`条件)转换为列表理解吗?

问题描述 投票:2回答:1

如何将此代码转换为列表理解?

pangram = "The quick brown fox jumps over the lazy dog"
lst = []
for char in pangram.casefold():
    if char not in lst:
        lst.append(char)
lst.sort()
print(''.join(lst))

我尝试了以下列表理解,但没有用:

lst = [char for char in pangram.casefold if char not in lst]

它出现以下错误

NameError: name 'lst' is not defined

请提出解决方案。

python list list-comprehension python-3.7
1个回答
0
投票

可以通过列表理解来破解它,但是您必须先预定义lst

In [1]: pangram = "The quick brown fox jumps over the lazy dog"                                                         
In [2]: lst = []                                                                                                        
In [3]: [lst.append(char) for char in pangram.casefold() if char not in lst] 
In [5]: lst.sort()                                                                                                      
In [6]: print(''.join(lst))                                                                                             
 abcdefghijklmnopqrstuvwxyz

但是,这确实是NOT的一种好习惯,因为列表理解是为了创建列表,而不是对现有列表进行变异。在此解决方案中,实际上是在创建None的列表,因为.append()返回None

如果目标只是获得唯一值的顺序并不重要,请改用set。 (我认为顺序并不重要,因为在此之后您set即可。)>

sort    
© www.soinside.com 2019 - 2024. All rights reserved.