Вычленение элементов списка, если не знаю конкретную длину

Возник такой вопрос. В своём проекте после определённых вычислений я получаю два списка коэффициентов:

k_1 = [1.1, 1.14, 1.18, 1.22, 1.3]
k_2 = [1, 1.05, 1.75, 1.8, 1.95]

По длине они всегда будут равны друг другу, но могут быть и 6 значений, и 7, т.е. конечная длина двух данных списков в каждом расчёте может быть разная, но на выходе их длина всегда равна.

Затем два этих коэф-та идут в формулу:

f = (735.6/(k_1 * k_2)) + 321

Вопрос: как сделать так, чтобы количество вычислений f было равно количеству значений списков коэффициентов и в каждом расчёте по порядку брался коэффициент из первого списка и из второго?

Результат должен быть таким:

f = (735.6 / (1.1 * 1.2)) + 321 # это первый расчёт
f = (735.6 / (1.14 * 1.05)) + 321 # второй и так далее пока списки с коэф-ми не закончатся

Думал как это реализовать ссылаясь на длины списков, но не справился с синтаксисом.


Ответы (4 шт):

Автор решения: strawdog

ну так и отталкивайтесь от фактической длины списков:

for i in range(len(k_1)):
    f = (735.6/(k_1[i] * k_2[i])) + 321
    print(f)
→ Ссылка
Автор решения: SergFSM

или так еще можно:

import numpy as np

k_1 = [1.1, 1.14, 1.18, 1.22, 1.3]
k_2 = [1, 1.05, 1.75, 1.8, 1.95]

arr1 = np.array(k_1)
arr2 = np.array(k_2)

f = (735.6/(arr1 * arr2)) + 321

>>> list(f)
'''
[989.7272727272727,
 935.5363408521305,
 677.222760290557,
 655.9726775956284,
 611.1775147928994]
→ Ссылка
Автор решения: DarthVader

Или можно объединить списки в словарь, а далее перемножить ключи со значениями:

dict1 = dict(zip(k_1, k_2)

for k_1, k_2 in dict1.items():
    f = (735.6/(k_1 * k_2)) + 321
    print(f)
→ Ссылка
Автор решения: CrazyElf

Так то знание конкретной длины вам вообще не нужно, просто параллельно итерируетесь по обоим словарям и всё:

for k1, k2 in zip(k_1, k_2):
    f = (735.6/(k1 * k2)) + 321
    print(f)

Ну или все значения f в одном списке:

f = [(735.6/(k1 * k2)) + 321 for k1, k2 in zip(k_1, k_2)]
print(f)

По идее этот код мог быть в другом ответе, но автор того ответа упорно цепляется за лишний промежуточный словарь.

→ Ссылка