Вы можете использовать любую итерацию для создания этих комбинаций.
Если вы новичок в Python, этот ответ попытается прояснить некоторые варианты.
Учитывая
A сокращение функция mul
и итерация данных:
def mul(a, b): # 1
"""Return a rounded multiple."""
return round(a * b, 2)
data = [0.1, 0.2, 0.3, 0.5] # 2
код
Подготовка итерируемого - линейного контейнераэто может быть зациклено.Примеры:
Вариант 1 - итератор
iterable = it.combinations(data, 2)
Вариант 2 - pandas DataFrame
df = pd.DataFrame(data, columns=["weights"])
iterable = it.combinations(df["weights"], 2)
Демо
[mul(x, y) for x, y in iterable] # 3
# [0.02, 0.03, 0.05, 0.06, 0.1, 0.15]
Подробности
- Эта функция содержит операцию, которую вы хотите применить.
- Aпростые итерируемые (например,
list
) данные.Обратите внимание, что он не должен быть вложенным. - Используйте любую итерацию для сокращения пар комбинаций
Вариант 3 - Операции pandas
В качестве альтернативыЕсли у вас есть данные в пандах, вы можете их использовать:
combs = list(it.combinations(data, 2))
df = pd.DataFrame(combs, columns=["a", "b"])
df
# a b
# 0 0.1 0.2
# 1 0.1 0.3
# 2 0.1 0.5
# 3 0.2 0.3
# 4 0.2 0.5
# 5 0.3 0.5
df.prod(axis=1).round(2).tolist()
# [0.02, 0.03, 0.05, 0.06, 0.1, 0.15]
Я бы рекомендовал выбрать либо чистый Python, либо pandas
(варианты 1 или 3).