如何连接所有列表(每个列表都是我的 for 循环)[重复]

Posted

技术标签:

【中文标题】如何连接所有列表(每个列表都是我的 for 循环)[重复]【英文标题】:How to concatenate all lists (each lists are made my for loop) [duplicate] 【发布时间】:2019-09-26 22:55:23 【问题描述】:

我正在通过 python BeautifulSoup、请求、Pandas 库抓取网页, 试图通过for循环收集许多页面中许多项目的信息。 但是当我运行这些代码时, 我只能得到彼此分开的列表,所以我想编辑这段代码以连接一个列表。

嗯,实际上我的问题不在于“连接列表”本身。 我已经知道了,但问题是, 如果函数给出一个一个“列出”的结果, 我如何编辑代码以生成一个结果,该结果给出连接在一起的“一个列表”,或者返回 [[list],[list],[list]] 形式,我可以轻松地连接在一起。

Windows、Jupyter Notebook、Python

def a(content):
    ptag_title=content.find("p","class":"title")
    ptag_price=content.find("p","class":"price-sale")
    return "title":ptag_title.text, "price":ptag_price.text

def get_pd_page(url):
    result = requests.get(url)
    bs_obj = bs4.BeautifulSoup(result.content,"html.parser")
    pbl=bs_obj.find("div","class":"product-box-list")
    contents = pbl.findAll("div","class":"content")
    pdinfo_list = [get_pdinfo(content ) for content in contents]
    return pdinfo_listn = 10

urls = [None] * n
fix_str = "https://www.abcdef.com"

for page_num in range(0,n):
    page_str = fix_str + str(page_num+1)
    urls[page_num] = page_str
    page_products = get_pd_page(urls[page_num])
    print(page_products)

每个页面的结果都是单独的列表。

['title':a, 'price'=b,'title':c, 'price'=d] ['title':d, 'price'=e,'title':f, 'price'=g]

我想把这整个列表列出来。

['title':a, 'price'=b,'title':c, 'price'=d,'title':d, 'price'=e,'title':f, 'price'=g]

或者,至少,通过列表列表

[['title':a, 'price'=b,'title':c, 'price'=d],['title':d, 'price'=e,'title':f, 'price'=g]]

【问题讨论】:

OP 还询问如何联系列表列表,副本没有回答! 您可以使用 + 运算符或列表推导来连接列表 @JaguarBlack 【参考方案1】:

使用+ 运算符连接任意数量的列表

In [19]: li1 = [1,2,3]                                                                                                         

In [20]: li2 = [4,5,6]                                                                                                         

In [21]: li1+li2                                                                                                               
Out[21]: [1, 2, 3, 4, 5, 6]

或者使用列表推导来连接列表列表中的子列表,也称为flattening 列表

In [23]: li = [[1,2,3],[4,5,6],[7,8,9]]  

In [30]: flat_list = [item for sublist in li for item in sublist]                                                              

In [31]: flat_list                                                                                                             
Out[31]: [1, 2, 3, 4, 5, 6, 7, 8, 9]

这些是比您尝试实现的更简单的示例,但类似的方法将解决您最终遇到的问题!

【讨论】:

太好了,很高兴帮助@JaguarBlack :) 如果对您有帮助,请考虑通过单击答案旁边的勾号将答案标记为已接受 :) 还可以考虑阅读 ***.com/help/someone-answers 感谢您接受@JaguarBlack :) 祝您有美好的一天!

以上是关于如何连接所有列表(每个列表都是我的 for 循环)[重复]的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的平台不绘制当使用带有数组列表的 for 循环(访问多个平台)时

操作列表

如何在 Python 中创建多个 for 循环列表的递归以获得组合? [复制]

连接或扩展字典列表覆盖到最后一个列表

如何在不使用 for 循环的情况下将列表中的所有项目与整数进行比较

For循环将列表的所有元素放入不同的文本文件中,而不是在python中遍历每个元素