Это продолжение моего предыдущего вопроса, в котором я забыл одну часть своей проблемы. У меня есть функция ниже, которая направлена на добавление элементов из одного списка в другой, пока список не будет только 0. Функция работает как задумано и, возможно, может использовать некоторые оптимизации, но я попробую это позже.
Моя текущая проблема заключается в том, что я должен каким-то образом поддерживать функцию работающей, но вместо вычисления значений с числами с плавающей запятой в списке, мне нужно делать это с числами с плавающей запятой в кортежах списков. Для некоторой справочной информации int в кортеже - это processID (этот код будет выполняться в многопроцессорном проекте), а второе значение - это простой тип с плавающей запятой, вычисляемый из различных функций.
В качестве примера списки должны выглядеть примерно так:
example_list = [(12345, -0.561432), (23456, -0.861423)]
Вот функция в качестве рабочего кода с примерами списков, содержащих только числа с плавающей запятой (не те кортежи, которые мне нужны).
def cancelOut(deficit_list, trade_1_list, trade_2_list):
lengths = [len(deficit_list), len(trade_1_list), len(trade_2_list)]
# List of the lists of positive values
positive_lists = [trade_1_list, trade_2_list]
if(len(deficit_list) != 0): # Check deficit_list isn't empty
total_positive = lengths[1] + lengths[2]
current_positive = 0
# Set all indexes to 0 to start
deficit_list_index = 0
trade_index = 0
trade_lists_index = 0
# While new_deficit_list contains a value different from 0 do the following
while not all(value == 0 for value in deficit_list):
# Determine the difference between the current deficit_list value and current positive value of the current list
value = deficit_list[deficit_list_index] + positive_lists[trade_lists_index][trade_index]
if(value > 0):
positive_lists[trade_lists_index][trade_index] = value
deficit_list[deficit_list_index] = 0
deficit_list_index += 1
elif(value == 0):
deficit_list[deficit_list_index] = 0
positive_lists[trade_lists_index][trade_index] = 0
deficit_list_index += 1
trade_index += 1
current_positive += 1
elif(value < 0):
deficit_list[deficit_list_index] = value
positive_lists[trade_lists_index][trade_index] = 0
current_positive += 1
if(trade_index == (lengths[trade_lists_index + 1] - 1)):
trade_index = 0
trade_lists_index = 1
else:
trade_index += 1
if(trade_lists_index == 1 and current_positive == total_positive):
break
return [deficit_list, trade_1_list, trade_2_list]
if __name__ == "__main__":
deficit_list_values = [-0.246497, -0.341068]
positive_values_1 = [0.022148, 0.212573, 0.100531]
positive_values_2 = [0.281474]
lists = cancelOut(deficit_list_values, positive_values_1, positive_values_2)
for i in range(len(lists)):
print(lists[i])
Я чувствую, что проблема, с которой я сталкиваюсь, заключается в том, что кортежи содержат числа с плавающей запятой и целые числа.