在python中同时循环两个for循环的问题

问题描述 投票:2回答:3

我想在python中同时执行两个for循环,以便同时读取两个不同文件中具有相同索引的两行。

这是我试过的:

def load_dataset(train_path: str, label_path: str) -> Tuple[List[str], List[str]]:
   words = []
   labels = []
   with open(train_path, encoding='utf8') as tp, open(label_path, encoding='utf8') as lp:
       for line_tp in tp, line_lp in lp:
           line_tp = line_tp.strip()
           line_lp = line_lp.strip()
           if line_tp and line_lp:
               word = line_tp
               label = line_lp 
               words.append(word)
               labels.append(label)
   return words, labels

但是,当我试图调用该函数时

(train_list, label_list) = load_dataset(train_path, label_path)

我明白了:

UnboundLocalError: local variable 'line_lp' referenced before assignment

现在,我真的认为问题是第一个for循环在第二个循环之前执行,有没有办法同时执行它们,具有相同的索引?

python
3个回答
5
投票

如果你想在一个循环中迭代到迭代器,你应该使用zip()

for line_tp, line_lp in zip(tp, lp):

1
投票

您可以使用zip从两个文件中获取行:

for line_tp,, line_lp in zip(tp, lp):
    ....

1
投票

你这里没有两个for循环。正如您应该能够从错误回溯中判断出来的那样,错误将在for语句本身中发生;因为这根本不是你如何遍历两个单独的列表。

很难说出你想要做什么,但我怀疑你的意思是:

for line_tp, line_lp in zip(tp, lp):
© www.soinside.com 2019 - 2024. All rights reserved.