这是带有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?
提前感谢
您可以将输出保存在单独的列表中,例如:
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]))
希望这会有所帮助!
您可以如下使用Set
理解:
letterlist = { aletter for aword in wordlist for aletter in aword}
[Set
默认情况下不会附加重复的值。