[英]How to do two for loops in a single python loop?
我不是要縮短這個:
for x in data1:
for y in data2:
*lines*
但要做到這一點:
for x in data1:
*lines*
for y in data2:
*lines*
進入這樣的單個循環(x 是來自 data1 的行,y 是僅來自 data2 的行):
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 的同時在一個循環中做到這一點?
除非我誤解了什么,你可以只使用zip
功能,例如
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])
如果兩個列表(可迭代對象)data1 和 data2 的長度相同,您可以執行以下操作:
for x, y in zip(data1, data2):
do_something(x, y)
zip 從 2 個或更多可迭代對象創建元組 (x, y)。 如果 data1 和 data2 的長度不同,您可以查看itertools
標准庫中的zip_longest
(它為缺失的項目添加None
值)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.