python - 用列表理解重写

标签 python list-comprehension

<分区>

我正在尝试用 python 列表理解重写以下代码

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)

不幸的是,如果没有匹配,它会生成一个空列表

[[], [], [], [], [], [], []]

最佳答案

这就是你想要的:

[m for m in (get_close_matches(p, rpms) for p in pkgs) if m]

因为您首先将 p 发送到函数中,然后检查函数返回值。

这将迭代每个 m 项目,并检查它是否有值,如果它有值,它将给你。

关于python - 用列表理解重写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20378912/

相关文章:

Python 字符串迭代

python - Pandas 使用单独的时区列转换日期时间

haskell - 使用列表理解的带有谓词的自定义过滤器函数

python - "Not enough values to unpack"遍历字典字典时

python - 在另一个嵌套列表中用 n 重复嵌套列表中的元素

python - 计算 Python 字典或列表使用的总 RAM

python - OOP 和 Python 的新手 -- 关于存储大量对象的问题

python - 使用Python从HDFS目录中读取文件并在Spark中创建RDD

python - 对多个输入集的理解

python - 连续出现两次的列表推导式