首页 > 解决方案 > 具有嵌套循环和 if 条件的列表理解,以及新列表的成员资格

问题描述

这是我的带有 if 条件的常规嵌套循环,以及新列表的成员资格:

wordlist = ["micro", "macro", "stats"]
letterlist = []

for aword in wordlist:
    for aletter in aword:
        if aletter not in letterlist:  
            letterlist.append(aletter)
print(letterlist)

打印出没有重复的字母:['m', 'i', 'c', 'r', 'o', 'a', 's', 't']

当我尝试使用列表理解做同样的事情时,我只能通过嵌套循环:

wordlist = ["micro", "macro", "stats"]
letterlist = [aletter for aword in wordlist for aletter in aword]
print(letterlist)

这将打印所有重复的字母:['m', 'i', 'c', 'r', 'o', 'm', 'a', 'c', 'r', 'o', 's', 't', 'a', 't', 's']

不幸的是,这不起作用:

wordlist = ["micro", "macro", "stats"]
letterlist = [[if aletter not in letterlist] for aword in wordlist for aletter in aword]

问题:如何根据上面的示例使用列表推导式执行带有 if 语句的嵌套循环?

提前致谢

标签: pythonalgorithmloopsif-statementlist-comprehension

解决方案


您可以使用函数dict.fromkeys()chain.from_iterable()

from itertools import chain

list(dict.fromkeys(chain.from_iterable(wordlist)))
# ['m', 'i', 'c', 'r', 'o', 'a', 's', 't']

在 Python 3.6 及更低版本中,您需要替换dictOrderedDict.


推荐阅读