嵌套For和Try循环 - 主循环无法解决

问题描述 投票:0回答:1

我的数据是一个列表,其中r行的长度各不相同,包含数据字符串 - 其中一些是浮点数,但已作为字符串读入。

我想首先遍历所有行,然后遍历所有元素,然后在所述元素上应用try / except函数,以查找可以转换为float的行中字符串的第一个实例。

当我明确地告诉第二个循环它应该对哪个行进行操作时,我的代码按预期输出,但是,当我尝试遍历所有行时,它只输出第一行的预期输出而不输出以下行。

预期的输出列表浮点索引(长度= len(数据))将是一个列表,其中包含所有行的第一个可转换元素的索引。

这是带有显式行定义输出[2]的代码,因为对于第二行,它是可转换为float的第二个元素:

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)

浮动列表可能是问题 - 它只是将所有可转换元素收集到一行的长列表中 - 我需要浮点列表与数据的方式相同,它将所有可转换元素放入新行,以便浮点数[0]我找到了所有行的第一个元素,但不知何故无法实现这一目标。

非常感谢帮助,谢谢!

python-3.x loops for-loop try-except
1个回答
-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 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)
© www.soinside.com 2019 - 2024. All rights reserved.