在 for 循环中列出超出范围的索引(第二次迭代)
list index out of range in for loop (2nd iteration)
在我的程序中,我从数据库中取出一些数据(原始变量)并必须使用它。
使用 print(raw)
时会显示:('x1 y1 z1 \nx2 y2 z2 \nx3 y3 z3 \nx4 y4 z4',)
(raw 有超过 450 个元素,所以我缩短了它)
现在我必须获取 x1
和 y1
并将它们转发到另一个模块。为此,我首先拆分 raw
pass_str = str(raw).split(f'\n')
print(pass_str)
打印结果如下:["('x1 y1 z1 ", 'x2 y2 z2', 'x3 y3 z3', 'x4 y4 z4',)"]
为了获取单个参数,我使用了一个 for 循环,所以我可以先获取 x1, y1
,然后获取 x2, y2
,依此类推:
for i in range(len(pass_str)):
pass_data = pass_str[i].split()
el = pass_data[0].split("'", 1)[1]
az = pass_data[1]
task = 'P' + ' ' + az + ' ' + el
client.send_request(task)
for 循环的第一次迭代没有任何问题。在第二次迭代中,for 循环在 pass_data = pass_str[i].split()
之后停止
问题似乎出现在“el = ...”这一行,我收到错误
Error: list index out of range
您正在尝试使用列表的字符串表示形式,然后对其进行解析以提取一些有意义的数据。列表的字符串表示并不是一个非常有用的数据结构,无法尝试使用!而列表本身就是。
raw = [('x1 y1 z1 \nx3 y2 z1',)]
pass_str = str(raw).split(f'\n') # ["[('x1 y1 z1 \", "x3 y2 z1',)]"]
您应该将字符串转换为列表,并正确访问它。
raw = [('x1 y1 z1 \nx3 y2 z1',)]
pass_strings = raw[0][0].split('\n') #["x1 y1 z1","x3 y2 z1"]
for pass_string in pass_strings:
pass_data = pass_string.split() #['x1','y1','z1']
el = pass_data[0]
az = pass_data[1]
task = 'P' + ' ' + az + ' ' + el
print(task) #> P x1 y1
在我的程序中,我从数据库中取出一些数据(原始变量)并必须使用它。
使用 print(raw)
时会显示:('x1 y1 z1 \nx2 y2 z2 \nx3 y3 z3 \nx4 y4 z4',)
(raw 有超过 450 个元素,所以我缩短了它)
现在我必须获取 x1
和 y1
并将它们转发到另一个模块。为此,我首先拆分 raw
pass_str = str(raw).split(f'\n')
print(pass_str)
打印结果如下:["('x1 y1 z1 ", 'x2 y2 z2', 'x3 y3 z3', 'x4 y4 z4',)"]
为了获取单个参数,我使用了一个 for 循环,所以我可以先获取 x1, y1
,然后获取 x2, y2
,依此类推:
for i in range(len(pass_str)):
pass_data = pass_str[i].split()
el = pass_data[0].split("'", 1)[1]
az = pass_data[1]
task = 'P' + ' ' + az + ' ' + el
client.send_request(task)
for 循环的第一次迭代没有任何问题。在第二次迭代中,for 循环在 pass_data = pass_str[i].split()
问题似乎出现在“el = ...”这一行,我收到错误
Error: list index out of range
您正在尝试使用列表的字符串表示形式,然后对其进行解析以提取一些有意义的数据。列表的字符串表示并不是一个非常有用的数据结构,无法尝试使用!而列表本身就是。
raw = [('x1 y1 z1 \nx3 y2 z1',)]
pass_str = str(raw).split(f'\n') # ["[('x1 y1 z1 \", "x3 y2 z1',)]"]
您应该将字符串转换为列表,并正确访问它。
raw = [('x1 y1 z1 \nx3 y2 z1',)]
pass_strings = raw[0][0].split('\n') #["x1 y1 z1","x3 y2 z1"]
for pass_string in pass_strings:
pass_data = pass_string.split() #['x1','y1','z1']
el = pass_data[0]
az = pass_data[1]
task = 'P' + ' ' + az + ' ' + el
print(task) #> P x1 y1