Python оптимизирует вложенный цикл for с помощью append
У меня есть 2 цикла for, которые будут работать в основном для больших данных. Я хочу оптимизировать это и максимально повысить скорость.
source = [['row1', 'row2', 'row3'],['Product', 'Cost', 'Quantity'],['Test17', '3216', '17'], ['Test18' , '3217' , '18' ], ['Test19', '3218', '19' ], ['Test20', '3219', '20']] creating a generator object it = iter(source) variables = ['row2', 'row3'] variables_indices = [1, 2] getkey = rowgetter(*key_indices) for row in it: k = getkey(row) for v in zip(variables, variables_indices): try: o = list(k) # populate with key values initially o.append(v) # add variable o.append(row[i]) # add value yield tuple(o) except IndexError: pass def rowgetter(*indices): if len(indices) == 0: #print("STEP 7") return lambda row: tuple() elif len(indices) == 1: #print("STEP 7") # if only one index, we cannot use itemgetter, because we want a # singleton sequence to be returned, but itemgetter with a single # argument returns the value itself, so let's define a function index = indices[0] return lambda row: (row[index],) else: return operator.itemgetter(*indices)
Это вернет кортеж, но он занимает так много времени в среднем 100 секунд для 100 000 строк (источник имеет 5 строк в Примере ). Может ли кто - нибудь помочь сократить это время, пожалуйста.
примечание : Я также пробовал использовать встроенные циклы и понимание списка, которое не возвращается для каждой итерации
Что я уже пробовал:
slist = (yieldfun(getkey(row), v, row[1]) for row in it for v, i in zip(variables, variables_indices) if row)