【问题标题】:How to convert a nested loop to a list comprehension in python如何在python中将嵌套循环转换为列表理解
【发布时间】:2017-12-22 18:21:18
【问题描述】:

如何将此代码转换为 python 中的列表理解

max_len = []
for word in fourier_dict:
    word = fourier_dict[word]
    for occur in word:
        max_len.append(len(occur))

我是 python 新手,我必须将此嵌套循环转换为我无法弄清楚的列表理解。非常感谢您的帮助。

【问题讨论】:

  • SO 不是代码编写服务。我们希望您向我们展示您的尝试以及您遇到的具体问题。 “我想要一个能做到这一点的程序,有人可以帮我写吗”对于这个网站来说不是一个合适的问题。

标签: python list list-comprehension


【解决方案1】:
max_len = [len(occur) for word in fourier_dict for occur in fourier_dict[word]]

应该可以。

【讨论】:

  • 这行得通,谢谢伙计,我无法弄清楚在列表理解中使用两个循环的语法
【解决方案2】:

首先,您实际上并没有使用dict 的密钥,因此您可以简化为:

max_len = []
for word in fourier_dict.values():
    for occur in word:
        max_len.append(len(occur))

直接迭代值(如果是 Py2 代码则使用 .itervalues() 以避免临时的 list)。从那里开始,它是到 listcomp 的简单转换,“追加”的值在最左边,而循环从左到右排列,从最外层到最内层:

max_len = [len(occur) for word in fourier_dict.values() for occur in word]

【讨论】:

    【解决方案3】:

    你可以试试这个:

    s = [len(i) for a, b in fourier_dict.items() for i in b]
    

    【讨论】:

    • 你的循环是向后的;你在b 存在之前迭代b。你也从不使用a,所以你也可以只使用.values()而不是.items()
    猜你喜欢
    • 2020-12-31
    • 2021-09-02
    • 2021-09-06
    • 1970-01-01
    • 1970-01-01
    • 2021-02-03
    • 1970-01-01
    • 2014-11-18
    • 2021-12-30
    相关资源
    最近更新 更多