итерация в списке с математическими операциями - PullRequest
1 голос
/ 22 апреля 2020

Например, у меня есть список тестов

a = [1,2,3,4,5,6,7,8,9,10]

, я хочу возвести в квадрат некоторые из них и получить их сумму. тогда я хочу разделить эту сумму на 2. и затем я хочу поднять до степени 1/4

код:

result = ((a[0]**2+a[1]**2)/2)**(1/4)

Пролбем является то, что я определяю каждое значение. в этом примере его a[0] и a[1]

я хочу просто получить некоторую переменную числа итерируемых объектов (в моем случае это n = 2)

для n = 3 это должно быть равно:

((a[0]**2+a[1]**2+a[2]**2)/2)**(1/4)

я могу получить эти значения с помощью

for i in range(3):
    print(a[i])

с выводом:

1
2
3

, но не знаю, как добавить их в мой математический код операции

Ответы [ 2 ]

0 голосов
/ 22 апреля 2020

Вы можете создать словарь операций для выполнения и применить их к части вашего списка. для этого требуется python 3.7+, чтобы гарантировать порядок вставки правил в dict == порядке их применения позже:

a = [1,2,3,4,5,6,7,8,9,10]

# rules
ops = {"square_list" : lambda x: [a**2 for a in x], # creates list
       "sum_list"    : lambda x : sum(x),           # skalar
       "div_2"       : lambda x : x/2,              # skalar
       "**1/4"       : lambda x: x**(1/4)}          # skalar


n_min = 0
for m in range(1,len(a)): 
    # get list part to operate on 
    parts = a [n_min:m]
    print(parts)

    # apply rules
    for o in ops:
        parts = ops[o](parts)

    # print result
    print(parts)

Вывод:

[1]
0.8408964152537145
[1, 2]
1.2574334296829355
[1, 2, 3]
1.6265765616977856
[1, 2, 3, 4]
1.9679896712654303
[1, 2, 3, 4, 5]
2.2899878254809036
[1, 2, 3, 4, 5, 6]
2.597184780029334
[1, 2, 3, 4, 5, 6, 7]
2.892507608519078
[1, 2, 3, 4, 5, 6, 7, 8]
3.1779718278112656
[1, 2, 3, 4, 5, 6, 7, 8, 9]
3.4550450628484315
0 голосов
/ 22 апреля 2020

Это должно сделать это:

square=0
for i in range(3):
    square=square+a[i]**2
    if i==2:
        square=(square/2)**(1/4)
print(square)

Это возводит в квадрат каждое число и добавляет его к переменной square. Если он находится на последней итерации i, он делит square на 2 и увеличивает его до степени 1/4

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...