Python:修正后重复当前迭代

时间:2017-03-28 06:56:59

标签: python for-loop

我正在破坏这个问题。我有一个for循环,在其中,检查一个条件。像这样:

filename = ['a', 'b', 'c', 'd']
headername = [1,2,3,4,5]
newfield = 6

for i in filename:
    print i, headername
    if newfield not in headername:
        headername.append(newfield)

输出结果为:

a [1, 2, 3, 4, 5]
b [1, 2, 3, 4, 5, 6]
c [1, 2, 3, 4, 5, 6]
d [1, 2, 3, 4, 5, 6]

但是,我希望当前迭代在条件失败时重复。所以结果是这样的。有人可以帮忙吗?

a [1, 2, 3, 4, 5]
a [1, 2, 3, 4, 5, 6]
b [1, 2, 3, 4, 5, 6]
c [1, 2, 3, 4, 5, 6]
d [1, 2, 3, 4, 5, 6]

谢谢!

修改 我必须重复当前循环(在校正后满足条件后),而不仅仅是添加一个额外的打印语句。我很抱歉我截断了我的初始代码,所以让我进一步解释一下。

我有一个文件列表,对于每个文件,我逐行读取它们,并将它们与现有列表进行比较,如果存在,我会将该行写入新的csv文件。但是,如果我遇到任何新的唯一行,我需要将该唯一行添加到现有列表中,删除csv文件并再次重新启动当前循环。

我之前没有扫描所有文件中任何唯一行的原因是因为我有很多文件,而且每个文件都非常大。

for i in files:
    outputFile = 'outputfile_{}.csv'.format(i)
    csvwriter= csv.writer(outputFile, delimiter=',')
    with open(i) as file:
        for line in file:
            field = line.split(',')[0]
            if field not in headername:
                os.remove(outputfile)
                headername.append(field )
            else:
                csvwriter.writerow(outputfile)

2 个答案:

答案 0 :(得分:2)

另一种不那么神圣的方式是:

filename = ['a', 'b', 'c', 'd']
headername = [1,2,3,4,5]
newfield = 6
j = 0

while j < len(filename):
    i = filename[j]
    print i, headername
    if newfield not in headername:
        headername.append(newfield)
    else:
        j += 1

同时打印所需的结果

答案 1 :(得分:0)

您可以尝试:

filename = ['a', 'b', 'c', 'd']
headername = [1,2,3,4,5]
newfield = 6

for i in filename:
    print i, headername
    if newfield not in headername:
        headername.append(newfield)
        print i, headername

输出:

a [1, 2, 3, 4, 5]
a [1, 2, 3, 4, 5, 6]
b [1, 2, 3, 4, 5, 6]
c [1, 2, 3, 4, 5, 6]
d [1, 2, 3, 4, 5, 6]