嵌套的 For 和 Try 循环 - 主循环无法解决
Nested For and Try Loop - Main loop doesn't solve
我的数据是一个包含 r 行的列表列表,其中包含不同长度的数据字符串 - 其中一些是浮点数,但已作为字符串读入。
我想先遍历所有行,然后遍历所有 元素 ,然后在所述 元素 [=35] 上应用 try/except 函数=] 查找行中可转换为浮点数的字符串的第一个实例。
当我明确告诉第二个循环它应该对哪一行执行操作时,我的代码按预期输出,但是,当我尝试遍历所有行时,它只输出第一行的预期输出和 none 以下行。
预期的输出列表 float_index(长度 = len(data))将是一个列表,其中包含所有行的第一个可转换元素的索引。
这是带有显式行定义输出 [2] 的代码,因为对于第二行,它是可转换为浮点数的第二个元素:
data = [['Mittl.', 'Halleninnenpegel,', 'Volllast', 'Li', '124', '132', '132', '132', '139', '138', '141', '139', '131', '146'],
['Abgaskamin', 'LW', '130', '129', '121', '104', '100', '96', '94', '89', '86', '108']]
row= 1
floats = []
float_index = []
for i in data[row]:
try:
floats.append(str(int(float(i))))
float_index = [data[row].index(floats[0])]
except:
pass
print(float_index)
这是循环数据中所有行的代码,但只输出第一行的预期值 float_index = [4],而预期值是 float_index = [4,2]:
data = [['Mittl.', 'Halleninnenpegel,', 'Volllast', 'Li', '124', '132', '132', '132', '139', '138', '141', '139', '131', '146'],
['Abgaskamin', 'LW', '130', '129', '121', '104', '100', '96', '94', '89', '86', '108']]
floats = []
float_index = []
for r in range(len(data)):
for i in data[r]:
try:
floats.append(str(int(float(i))))
float_index = [data[r].index(floats[0])]
except:
pass
print(float_index)
floats 列表可能是问题所在 - 它只是将所有可转换元素收集到一个只有一行的长列表中 - 我需要 floats 列表与 data 的方式相同,它将所有可转换元素放入新行中,因此通过 floats[0] 我发现所有行的第一个元素,但不知何故无法实现这一点。
非常感谢您的帮助,谢谢!
无需遍历每个元素,只要找到第一个元素就跳出循环:
data = [['Mittl.', 'Halleninnenpegel,', 'Volllast', 'Li', '124', '132', '132', '132', '139', '138', '141', '139', '131', '146'],
['Abgaskamin', 'LW', '130', '129', '121', '104', '100', '96', '94', '89', '86', '108']]
floats = []
float_index = []
for lest in data:
float_temp = None
float_ind_temp = None
for el in lest:
try:
float_temp = str(int(float(el)))
floats.append(float_temp)
float_index_temp = lest.index(float_temp)
break
except:
pass
float_index.append(float_index_temp)
print(float_index)
我的数据是一个包含 r 行的列表列表,其中包含不同长度的数据字符串 - 其中一些是浮点数,但已作为字符串读入。
我想先遍历所有行,然后遍历所有 元素 ,然后在所述 元素 [=35] 上应用 try/except 函数=] 查找行中可转换为浮点数的字符串的第一个实例。
当我明确告诉第二个循环它应该对哪一行执行操作时,我的代码按预期输出,但是,当我尝试遍历所有行时,它只输出第一行的预期输出和 none 以下行。
预期的输出列表 float_index(长度 = len(data))将是一个列表,其中包含所有行的第一个可转换元素的索引。
这是带有显式行定义输出 [2] 的代码,因为对于第二行,它是可转换为浮点数的第二个元素:
data = [['Mittl.', 'Halleninnenpegel,', 'Volllast', 'Li', '124', '132', '132', '132', '139', '138', '141', '139', '131', '146'],
['Abgaskamin', 'LW', '130', '129', '121', '104', '100', '96', '94', '89', '86', '108']]
row= 1
floats = []
float_index = []
for i in data[row]:
try:
floats.append(str(int(float(i))))
float_index = [data[row].index(floats[0])]
except:
pass
print(float_index)
这是循环数据中所有行的代码,但只输出第一行的预期值 float_index = [4],而预期值是 float_index = [4,2]:
data = [['Mittl.', 'Halleninnenpegel,', 'Volllast', 'Li', '124', '132', '132', '132', '139', '138', '141', '139', '131', '146'],
['Abgaskamin', 'LW', '130', '129', '121', '104', '100', '96', '94', '89', '86', '108']]
floats = []
float_index = []
for r in range(len(data)):
for i in data[r]:
try:
floats.append(str(int(float(i))))
float_index = [data[r].index(floats[0])]
except:
pass
print(float_index)
floats 列表可能是问题所在 - 它只是将所有可转换元素收集到一个只有一行的长列表中 - 我需要 floats 列表与 data 的方式相同,它将所有可转换元素放入新行中,因此通过 floats[0] 我发现所有行的第一个元素,但不知何故无法实现这一点。
非常感谢您的帮助,谢谢!
无需遍历每个元素,只要找到第一个元素就跳出循环:
data = [['Mittl.', 'Halleninnenpegel,', 'Volllast', 'Li', '124', '132', '132', '132', '139', '138', '141', '139', '131', '146'],
['Abgaskamin', 'LW', '130', '129', '121', '104', '100', '96', '94', '89', '86', '108']]
floats = []
float_index = []
for lest in data:
float_temp = None
float_ind_temp = None
for el in lest:
try:
float_temp = str(int(float(el)))
floats.append(float_temp)
float_index_temp = lest.index(float_temp)
break
except:
pass
float_index.append(float_index_temp)
print(float_index)