我想在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循环在第二个循环之前执行,有没有办法在相同的时间使用相同的索引来执行它们?
答案 0 :(得分:5)
如果要在一个循环中迭代到迭代器,则应使用zip()
for line_tp, line_lp in zip(tp, lp):
答案 1 :(得分:1)
您可以使用zip
从两个文件中获取行:
for line_tp,, line_lp in zip(tp, lp):
....
答案 2 :(得分:1)
这里根本没有两个for循环。正如您应该从错误回溯中看出的那样,该错误将在for语句本身中发生;因为这根本不是您如何遍历两个单独的列表。
很难说出您要做什么,但我怀疑您的意思是:
for line_tp, line_lp in zip(tp, lp):