如何在一个python循环中执行两个for循环?

2024-09-30 12:13:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我不是想缩短这个:

for x in data1:
    for y in data2:
        *lines*

但要做到这一点:

for x in data1:
    *lines*

for y in data2:
    *lines*

进入这样的单个循环(x是来自数据1的行,y是仅来自数据2的行):

for x,y in data1,data2:
    *lines*

这可能吗?我想在单个循环中拟合并预测朴素贝叶斯数据:

# group data by prodi
for no, dfx_prodi in dfx.groupby('prodi'):
    # implement naive bayes fit data
    bnb.fit(dfx_prodi[var], dfx_prodi['daftar_kembali'])

for no, dfy_prodi in dfy.groupby('prodi'):
    # implement naive bayes predict data
    y_pred = bnb.predict(dfy_prodi[var])

这是可行的,但结果似乎有点可疑,有没有办法在一个循环中完成这项工作,同时保持groupby


Tags: 数据noinfordataimplementlinesgroupby
2条回答

除非我误解了什么,否则您可以使用^{}函数,例如

for x,y in zip(x_list,y_list):
    print(x,y)

在你的情况下,这应该是

for (no, dfx_prodi), (no, dfy_prodi) in zip(dfx.groupby('prodi'), dfy.groupby('prodi')):
    # implement naive bayes fit data
    bnb.fit(dfx_prodi[var], dfx_prodi['daftar_kembali'])
    y_pred = bnb.predict(dfy_prodi[var])

如果两个列表(iterables)data1和data2的长度相同,则可以执行以下操作:

for x, y in zip(data1, data2):
    do_something(x, y)

zip从2个或更多的可编辑项创建元组(x,y)。如果data1和data2的长度不同,您可以查看itertools标准库中的zip_longest(它为缺少的项添加None值)

相关问题 更多 >

    热门问题