我正在破坏这个问题。我有一个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)
答案 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]