【问题标题】:Nested List-comprehension returning list of lists rather than a single list嵌套列表理解返回列表列表而不是单个列表
【发布时间】:2020-01-31 19:21:19
【问题描述】:

我有一个双 for 循环,它工作得非常好。 给定一个类别列表,它会填写“空白”并返回一个包含 1000 多个 URL 的列表。

但是,当将循环转换为嵌套列表理解时,它会返回一个列表列表。

我知道将其展平的可能性,但是我想知道我是否首先做错了什么。 我宁愿避免额外的扁平化步骤。

上述for循环:

for cat in categories:
    page_count = get_page_count(cat)
    for page in range(1,page_count+1):
        urls_to_scrape.append("xyz.com/" + cat + f"all?page={page}" )

我尝试的列表理解:

urls_to_scrape_comp = [["xyz.com/" + cat + f"all?page={page}" for page in range(1,get_page_count(cat))] for cat in categories]

如最初所述,理想的结果是使用列表理解的单个列表

【问题讨论】:

    标签: python python-2.7 nested list-comprehension


    【解决方案1】:

    不要用括号括起来,你应该没问题:

    urls_to_scrape_comp = ["xyz.com/" + cat + f"all?page={page}" for page in range(1,get_page_count(cat)) for cat in categories]
    

    【讨论】:

    • 不幸的是,这会产生错误的结果。我得到的结果比预期的要多。 @Simon 的回答完美。
    • 糟糕,我忘了颠倒顺序...@Simon 说对了 :)
    【解决方案2】:

    只需删除多余的括号并颠倒理解的顺序

    urls_to_scrape_comp = ["xyz.com/" + cat + f"all?page={page}" for cat in categories for page in range(1,get_page_count(cat))]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-07
      • 1970-01-01
      相关资源
      最近更新 更多