gpt4 book ai didi

python - 在Python中合并2个列表

转载 作者:行者123 更新时间:2023-12-01 04:00:26 26 4
gpt4 key购买 nike

使用我当前的脚本

from lxml import html
import requests
from bs4 import BeautifulSoup
import re
import csv
import itertools


r = requests.get("http://www.mediamarkt.be/mcs/productlist/_128-tot-150-cm-51-tot-59-,98952,501091.html?langId=-17")

soup = BeautifulSoup((r.content),'lxml')

links = soup.find_all("h2")

g_data = soup.find_all("div", {"class": "price small"})

for item in g_data:
prijs =[item.text.encode("utf-8") for item in g_data]

for link in links:
if "TV" in link.text:
product = [link.text.encode("utf-8").strip() for link in links if "TV" in link.text]

for item in itertools.chain(prijs + product):
print item

我得到的列表首先是所有“prijs”,下面是所有“products”。例如:普赖斯普赖斯普赖斯产品产品产品

我想要得到以下结果普赖斯产品展示

普赖斯产品展示

普赖斯产品展示

谢谢

最佳答案

问题的本质似乎与您的实际代码关系不大,因此为了使这个问题对 future 的读者有用,我将使用示例列表为您提供一个一般性答案。

不要连接两个列表。使用 zip 生成对列表,然后展平结果。

>>> lst1 = ['a1', 'a2', 'a3']
>>> lst2 = ['b1', 'b2', 'b3']
>>> [x for pair in zip(lst1, lst2) for x in pair]
['a1', 'b1', 'a2', 'b2', 'a3', 'b3']

使用 itertools.chain 使扁平化看起来更好一些。

>>> list(chain.from_iterable(zip(lst1, lst2)))
['a1', 'b1', 'a2', 'b2', 'a3', 'b3']

或者,通过拆包:

>>> list(chain(*zip(lst1, lst2)))
['a1', 'b1', 'a2', 'b2', 'a3', 'b3']

由于您使用的是 Python 2,因此通过使用 itertools.izip 而不是 zip 可以提高上述所有内容的内存效率(前者返回一个迭代器,后者返回一个迭代器)后者是一个列表)。

关于python - 在Python中合并2个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36656920/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com