Петли - не самый эффективный способ достижения этого. Тем не менее, я полагаю, что в этом случае есть смысл/необходимость в их использовании.
Итак, предположим, что вы сказали, что хотите провести элементарную операцию, используя только итерации (циклы) и никакие сторонние библиотеки. Мы можем сделать это эффективно (или как можно более эффективно) с помощью генераторов. Это, как я бы об этом:
data = [1, 2, 3, 4, 5]
operations = {
"+": lambda x,y: (value+y for value in x),
"-": lambda x,y: (value-y for value in x),
"*": lambda x,y: (value*y for value in x),
"/": lambda x,y: (value/y for value in x),
}
calculations = (
(key, val, oper(data, val))
for key, oper in sorted(operations.items())
for val in data
)
Теперь давайте показывать результаты:
for item in calculations:
op, val, res = item
preped_res = str.join(
' | ', ["{:^6.2g}".format(val) for val in res]
)
print(" {} {} {:.2g} = | {} |".format(data, op, val, preped_res))
, который будет выглядеть так:
[1, 2, 3, 4, 5] * 1 = | 1 | 2 | 3 | 4 | 5 |
[1, 2, 3, 4, 5] * 2 = | 2 | 4 | 6 | 8 | 10 |
[1, 2, 3, 4, 5] * 3 = | 3 | 6 | 9 | 12 | 15 |
[1, 2, 3, 4, 5] * 4 = | 4 | 8 | 12 | 16 | 20 |
[1, 2, 3, 4, 5] * 5 = | 5 | 10 | 15 | 20 | 25 |
[1, 2, 3, 4, 5] + 1 = | 2 | 3 | 4 | 5 | 6 |
[1, 2, 3, 4, 5] + 2 = | 3 | 4 | 5 | 6 | 7 |
[1, 2, 3, 4, 5] + 3 = | 4 | 5 | 6 | 7 | 8 |
[1, 2, 3, 4, 5] + 4 = | 5 | 6 | 7 | 8 | 9 |
[1, 2, 3, 4, 5] + 5 = | 6 | 7 | 8 | 9 | 10 |
[1, 2, 3, 4, 5] - 1 = | 0 | 1 | 2 | 3 | 4 |
[1, 2, 3, 4, 5] - 2 = | -1 | 0 | 1 | 2 | 3 |
[1, 2, 3, 4, 5] - 3 = | -2 | -1 | 0 | 1 | 2 |
[1, 2, 3, 4, 5] - 4 = | -3 | -2 | -1 | 0 | 1 |
[1, 2, 3, 4, 5] - 5 = | -4 | -3 | -2 | -1 | 0 |
[1, 2, 3, 4, 5]/1 = | 1 | 2 | 3 | 4 | 5 |
[1, 2, 3, 4, 5]/2 = | 0.5 | 1 | 1.5 | 2 | 2.5 |
[1, 2, 3, 4, 5]/3 = | 0.33 | 0.67 | 1 | 1.3 | 1.7 |
[1, 2, 3, 4, 5]/4 = | 0.25 | 0.5 | 0.75 | 1 | 1.2 |
[1, 2, 3, 4, 5]/5 = | 0.2 | 0.4 | 0.6 | 0.8 | 1 |
Надеется, что это отвечает на ваш вопрос. Но если есть что-то, что я пропустил, пожалуйста, не стесняйтесь говорить мне, и мы увидим, что мы можем сделать.
Использование 'eval' не рекомендуется – bluesmonk