如何将这段代码转换为列表理解?
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
请提出解决方案。
最佳答案
可以使用列表理解来破解它,但您必须首先预先定义 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
但是,这确实不是一种好的做法,因为列表推导式是用于创建列表的,而不是用于改变现有的列表。在此解决方案中,您实际上是在创建一个 None
列表,因为 .append()
返回 None
。
如果目标只是获得唯一值且顺序并不重要,请使用 set
反而。 (我认为顺序并不重要,因为您是在之后排序
它的)。
In [29]: pangram = "aAaabBBbbcCc"
In [30]: lst = list(set(pangram.casefold()))
In [31]: lst.sort()
In [32]: print(''.join(lst))
abc
In [33]: lst = []
In [34]: [lst.append(char) for char in pangram.casefold() if char not in lst]
Out[34]: [None, None, None]
In [35]: lst.sort()
In [36]: print(''.join(lst))
abc
关于python - 这个 for 循环代码(带有 `if not in` 条件)可以转换为列表理解吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62356023/