python - 具有嵌套循环和 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 语句的嵌套循环?
提前致谢
解决方案
您可以使用函数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 及更低版本中,您需要替换dict
为OrderedDict
.
推荐阅读
- c# - 如何从 Excel 中读取并替换 .txt 文件中的某些值
- caffe - Caffe:准确度停留在 0
- touch - TFT LCD驱动和TFT LCD控制器有什么区别
- android - ListView Android 中的 SQLite 数据库
- solar - 这是恒压mppt充电控制器吗?
- c# - 通过触摸按钮或图像而不是 A - D 键在表面上左右移动 3d 块
- powerbi - 在 Power BI 中显示为另一列的百分比
- python - 函数变量的范围
- javascript - 添加列表项的 URL 并将其添加为按钮的链接
- html - 垂直和水平居中对齐容器 div 内的图像和文本