Как разделить 1 список на 3 - python - PullRequest
0 голосов
/ 21 мая 2018

У меня есть список:

a = [0.42857142857142855, 0.5714285714285714, 0.5714285714285714, 0.42857142857142855, 0.42857142857142855, 0.5714285714285714, 0.5714285714285714, 0.4285714285714286, 0.5714285714285714, 0.4285714285714286, 0.5714285714285714, 0.4285714285714286, 0.4285714285714286, 0.4285714285714286, 0.4285714285714286]

, поэтому я хочу разделить вот так и умножить это так:

[[0.42857142857142855, 0.5714285714285714, 0.5714285714285714, 0.42857142857142855, 0.42857142857142855], [0.5714285714285714, 0.5714285714285714, 0.4285714285714286, 0.5714285714285714, 0.4285714285714286], [0.5714285714285714, 0.4285714285714286, 0.4285714285714286, 0.4285714285714286, 0.4285714285714286]]

и умножить на каждый индекс:

[0.42857142857142855, 0.5714285714285714, 0.5714285714285714, 0.42857142857142855, 0.42857142857142855]
[0.5714285714285714, 0.5714285714285714, 0.4285714285714286, 0.5714285714285714, 0.4285714285714286]
[0.5714285714285714, 0.4285714285714286, 0.4285714285714286, 0.4285714285714286, 0.4285714285714286]
the multiply:
[0.14993752,0.079966681,0.149937526,0.149937526,0.03331945]

Как я могу сделать это с Python?

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

Сначала мы делим список на три части.

def get_slices(lst, n=3):
    slice_len = len(lst) // n
    return [lst[slice_len * i: slice_len * (i + 1)] for i in range(n)]

get_slices([1, 2, 3, 4, 5, 6])  # [[1, 2], [3, 4], [5, 6]]

Затем с помощью reduce мы можем умножить элементы в каждом фрагменте.

# from functools import reduce  # reduce must be imported in Python3
from operator import mul

def mult(nums):
    return [reduce(mul, t, 1) for t in zip(*nums)]

Здесь обе функции работают вместе.

l = [1, 2, 3, 4, 5, 6]

mult(get_slices(l))  # [2, 12, 30]
0 голосов
/ 21 мая 2018

Это должен быть правильный ответ

my_list = [1, 2, 3, 4, 5]
my_new_list = [i * 5 for i in my_list]

>>> print(my_new_list)
[5, 10, 15, 20, 25]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...