python 行循环_python – 如何将这一行for循环更改为正常for循环?

这是一个我无法理解的一般性问题.

如果我有这个:

somelist = [[a for a, b in zip(X, y) if b == c] for c in np.unique(y)]

如何将其写为正常的多行循环?我似乎从来没有做对.

编辑:到目前为止,我已经尝试过:

somelist = []

for c in np.unique(y):

for x, t in zip(X, y):

if t == c:

separated.append(x)

但我不确定这是否正确,因为我没有在我的代码的其他部分得到预期的结果.

最佳答案 要展开嵌套的理解,请按照下列步骤操作:

>首先创建一个空容器:somelist = []

>如果理解有一个if子句,请在for之后加上

>然后,从最里面开始,将嵌套的理解展平

内心理解是:

row = []

for a, b in zip(X, y):

if b == c:

row.append(a)

然后,somelist只不过是[np.unique(y)]中的c行,其中row取决于几个因素.

这相当于:

somelist = []

for c in np.unique(y):

somelist.append(row)

所以完整的版本是:

somelist = []

for c in np.unique(y):

row = []

for a, b in zip(X, y):

if b == c:

row.append(a)

c.append(row)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现循环爬取的数据,爬取一行输出一行到 Excel,可以使用 Python循环结构和前面提到的爬取和输出方法。具体步骤如下: 1. 使用 Python循环结构循环爬取数据,例如: ```python for page in range(1, 11): # 循环爬取 10 页数据 url = f"https://example.com?page={page}" # 构造每一页的 URL response = requests.get(url) # 发送 GET 请求并获取响应 soup = BeautifulSoup(response.text, "html.parser") # 解析网页内容 data = [td.text for td in soup.find("table").find("tr").find_all("td")] # 获取第一行数据 ws.append(data) # 向工作表中添加一行数据 wb.save("example.xlsx") # 保存工作簿到文件中 ``` 注意,这里假设要爬取的数据分成多页,每页包含一个 HTML 表格,第一行是表头,第二及以后是数据。可以根据实际情况修改代码。 2. 在每次循环中,使用 `openpyxl` 库打开要写入的 Excel 文件,获取当前工作表,向工作表中添加一行数据,然后保存工作簿到文件中,例如: ```python from openpyxl import load_workbook wb = load_workbook("example.xlsx") # 打开要写入的 Excel 文件 ws = wb.active # 获取当前活动的工作表 ws.append(data) # 向工作表中添加一行数据 wb.save("example.xlsx") # 保存工作簿到文件中 ``` 注意,在循环中每次都需要重新打开和关闭 Excel 文件,否则可能会导致文件写入错误。 通过以上步骤,就可以实现循环爬取的数据,爬取一行输出一行到 Excel 的操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值