Я хотел бы предложить некоторое предложение по проблеме доступа к данным, хранящимся в списке списков.python условный доступ к списку списков
Мой список списков выглядит следующим образом:
my_list = [['RN1', 200, 0.55], ['RN2', 0.8, 0.44], ['RN3', 0.2, 0.01]]
Список упорядочен в отношении третьего элемента внутренних списков.
То, что я хочу сделать, это:
Чтобы проверить, если третий элемент первого внутреннего списка больше или равно 0,9; если да, то я хочу, чтобы создать список, содержащий первые 2 элементы первого внутреннего списка
my_list[0][2] >= 0.9
Что, если правда будет давать:
new_list = [['RN1', 200]]
Если нет, то я хочу добавить к
my_list[0][2]
элементу соответствующий элемент второго внутреннего списка:my_list[0][2] + my_list[1][2]
и проверьте, больше ли это значение0.9
.
Если да, я хочу, чтобы остановить цикл, добавив к моему new_list первых 2 элементов второго внутреннего списка:
new_list = [['RN1', 200], ['RN2', 0.8]]
Если не продолжать добавлять элементы до самого порога 0.9
достигается.
Конечно, это только пример. Мои реальные списки могут быть намного больше, и процесс должен быть итеративным.
Я пробовал разные возможности, но все они не работают. Например, я сделал:
sum_percentage = 0.0
new_list =[]
for i in old_list:
if sum_percentage <= 0.9:
sum_percentage = sum_percentage + i[2]
new_list.append([i[0], i[1]])
И другие варианты этого ... Теперь я застрял.
Любые советы?
Большое спасибо
У вас есть 2 линии. Вы хотите добавить этот элемент только в том случае, если 'sum_percentage <= 0.9'. Вы хотите каждый раз добавлять 'i [2]' в 'sum_percentage'. – Phylogenesis
Я правильно интерпретирую это? Идея состоит в том, чтобы добавить первые два элемента старого списка в новый список до тех пор, пока сумма третьего значения (ов) элементов в старом списке больше или равна 0,9? – Matthew0898
в вашем коде, цикл 'for' имеет слишком большой отступ. – dbliss