具有嵌套循环和if条件的列表理解,以及新列表的成员资格

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

这是带有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语句执行nestloop?

提前感谢

python algorithm loops if-statement list-comprehension
2个回答
0
投票

您可以将输出保存在单独的列表中,例如:

wordlist = ["micro", "macro", "stats"]
res=[]
[res.append(aletter) for aword in wordlist for aletter in aword if aletter not in res]
print(res)

OR

list(set([aletter for aword in wordlist for aletter in aword]))

希望这会有所帮助!


0
投票

您可以如下使用Set理解:

letterlist = { aletter for aword in wordlist for aletter in aword}

[Set默认情况下不会附加重复的值。

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