我正在尝试使用python list comprehension重写以下代码
vuln = []
for p in pkgs:
m = get_close_matches(p, rpms)
if m:
vuln.append(m)
if vuln:
print(vuln)
我的第一个版本在
之下 vuln = [get_close_matches(p, rpms)
for p in pkgs]
if vuln:
print(vuln)
不幸的是,如果没有匹配项,它会生成一个空列表列表
[[], [], [], [], [], [], []]
答案 0 :(得分:4)
这就是你想要的:
[m for m in (get_close_matches(p, rpms) for p in pkgs) if m]
因为您首先将p
发送到函数中,然后检查函数返回是否有值。
这将迭代每个m
项,并检查它是否有值,如果它有值,它将被提供给你。