使用python以相同的速率迭代文本文件中的列表和行?

使用python以相同的速率迭代文本文件中的列表和行?,python,list,file-io,iteration,Python,List,File Io,Iteration,所以我有一个作业,我在另一篇文章中问过,但不是很详细,所以我自己的错没有得到我想要的答案。我需要做的是打开一个结构化文本文件,其中文件的每一行都属于特定的类别。虽然类别和顺序不会改变,但重复的次数可能会改变。我的工作是获取每一行(忽略前2行)并向该行添加一个XML标记。为此,我列出了一个类别的字符串名称列表。我遇到的问题是,我不知道如何以与文件中文本行相同的速率遍历类别列表 例如: 如果我的文本文件是: peas carrots broccoli beans 我的名单是 tagList=["a

所以我有一个作业,我在另一篇文章中问过,但不是很详细,所以我自己的错没有得到我想要的答案。我需要做的是打开一个结构化文本文件,其中文件的每一行都属于特定的类别。虽然类别和顺序不会改变,但重复的次数可能会改变。我的工作是获取每一行(忽略前2行)并向该行添加一个XML标记。为此,我列出了一个类别的字符串名称列表。我遇到的问题是,我不知道如何以与文件中文本行相同的速率遍历类别列表

例如:

如果我的文本文件是:

peas
carrots
broccoli
beans
我的名单是

tagList=["apples","oranges","bananas","pears"]
然后我不断得到:

<apples>peas</apples>
<oranges>peas</oranges>
<bananas>peas</bananas>
<pears>peas</pears>
<apples>carrots</apples>
<oranges>carrots</oranges>
<bananas>carrots</bananas>
<pears>carrots</pears>
ect....
豌豆 豌豆 豌豆 豌豆 胡萝卜 胡萝卜 胡萝卜 胡萝卜 发射型计算机断层扫描仪。。。。 而不仅仅是

<apples>peas</apples>
<oranges>carrots</oranges>
<bananas>broccoli</bananas>
<pears>beans</pears>
豌豆 胡萝卜 西兰花 豆 我觉得我需要一个嵌套的for循环,所以我有这样的东西

for line in file:
    for x in tagList:
        outputFile.write("<"+x+">"+line+"</"+x+">\n")
对于文件中的行:
对于标记列表中的x:
outputFile.write(“+line+”\n”)

我完全明白为什么事情会这样发展,我只是觉得不知道如何解决它。我已经找到了其他关于以相同速率遍历2个列表的帖子,但似乎找不到任何关于以相同速率遍历文件和列表中的行的帖子。任何帮助都将不胜感激。谢谢

我不确定这里关于回答家庭作业的政策是什么,但我会解释你的代码在做什么,以防有帮助:

它完全按照你的编码方式工作

您嵌套了for循环(文件中的标记列表)

所以你们基本上要做的是遍历文件,若有4项,在每一点(1-4),你们要再次循环遍历标记列表(有4项)

所以,在第一步,您得到了PEA(来自文件),但在您可以输出它之前,您进入另一个for循环(标记列表),一旦进入该循环,您将输出“PEA”

然后第二个for循环将再经过3次,您将得到总共4个“豌豆”。迭代完成后,您将返回第一个for循环,并移动到下一个元素,这一次将输出胡萝卜


希望这能解释你在这里做什么。

Unutbu是正确的-zip是这里最容易使用的

>>> lista = ['a', 'b', 'c', 'd']
>>> listb = [1, 2, 3, 4]
>>> for a, b in zip(lista, listb):
    print a, b

a 1
b 2
c 3
d 4
嵌套的for循环看起来是这样的,本质上会将列表相乘-我认为这不是您想要的

>>> for a in lista:
    for b in listb:
        print a, b


a 1
a 2
a 3
a 4
b 1
b 2
...
另一种方法是使用列表索引,尽管由于Python具有zip函数,您最好使用它

>>> for i in range(4):
    print lista[i], listb[i]


a 1
b 2
c 3
d 4
python3.2
列表理解
>>>[[”“+i+”“]表示st中的i表示标签中的v]

作业上的堆栈溢出元:
    python 3.2
    list comprehension

    >>> [["<"+v+">"+i+"</"+v+">"] for i in st for v in tag]