我正在尝试使用条件len(J[i+1])>=len(J[i])
将数据保存到.txt
文件。但我得到了一个错误。我该怎么解决?基本上,我希望代码只在满足条件时保存数据,而不是在其他情况下。选择性储蓄(如果存在这样的术语)。
File=1
import csv
for i in range(0,5):
J=[0,1]*(i-1)
print("J =",J)
print("len J =",len(J))
with open(rf"C:\Users\User\OneDrive - Technion\Research_Technion\Python_PNM\Surfactant A-D\12 nodes_New\{File}\Test.txt", 'a') as f:
writer = csv.writer(f)
if (len(J[i+1])>=len(J[i])):
f.writelines('\n')
f.write(str(J))
错误是
in <module>
if (len(J[i+1])>=len(J[i])):
IndexError: list index out of range
3条答案
按热度按时间flmtquvp1#
J=[0,1]*(i-1)
创建一个列表,如下所示:[0, 1, 0, 1, 0, 1]
。你的代码稍后检查if (len(J[i+1])>=len(J[i])):
,但是你的列表是平的,所以你不能得到那里的值的长度。(这将是一个未来的错误)你得到错误的原因是i-1的第一个值是0,所以你创建了一个空的列表
J=[0,1]*(i-1)
,那里没有值可以比较。试着把它乘以ilf5gs5x22#
试试用这样的方法
kuhbmx9i3#
这将抛出一个错误,因为你在这一行
if (len(J[i+1])>=len(J[i])):
你试图在循环的第五次迭代中访问j[5]。因为j[5]不存在,所以抛出一个错误。
尝试修改你的代码,这样它就不会尝试访问列表中不存在的元素。