У меня есть 2 списка, как показано. Как мне разделить все элементы list_A на list_B? - PullRequest
0 голосов
/ 06 августа 2020

это вход: list_A = [[1, 1, 1, 1, 1], [1, 2, 1, 1, 1], [1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1]]

list_B = [5, 6, 6, 5]

Мне нужен следующий результат:

expected_output = [[1/5, 1/5, 1/5, 1/5, 1/5], [1/6, 2/6, 1/6, 1/6, 1/6], [1/6, 1/6, 1/6, 1/6, 1/6, 1/6], [1/5, 1/5, 1/5, 1/5, 1/5]]

Ответы [ 3 ]

1 голос
/ 06 августа 2020
list(list(map(lambda x: x/b, a)) for a, b in zip(list_A, list_B))

Вывод:

[[0.2, 0.2, 0.2, 0.2, 0.2], [0.16666666666666666, 0.3333333333333333, 0.16666666666666666, 0.16666666666666666, 0.16666666666666666], [0.16666666666666666, 0.16666666666666666, 0.16666666666666666, 0.16666666666666666, 0.16666666666666666, 0.16666666666666666], [0.2, 0.2, 0.2, 0.2, 0.2]]
0 голосов
/ 06 августа 2020

Пробовал примерно так:

list_A = [[1, 1, 1, 1, 1], [1, 2, 1, 1, 1], [1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1]]
list_B = [5, 6, 6, 5]

for i in range(len(list_B)):
    list_A[i] = [x/list_B[i] for x in list_A[i]]
print(list_A)
0 голосов
/ 06 августа 2020

Использование a для l oop:

list_A = [[1, 1, 1, 1, 1], [1, 2, 1, 1, 1], [1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1]]
list_B = [5, 6, 6, 5]
expected_output = []

for idx, nums in enumerate(list_A):
   output_list = []
   for num in nums:
       output_list.append(num / list_B[idx])
   expected_output.append(output_list)

Использование понимания списка:

expected_output = [[num / list_B[idx] for num in nums] for idx, nums in enumerate(list_A)]

Вывод:

>> print(expected_output)
[[0.2, 0.2, 0.2, 0.2, 0.2], 
[0.16666666666666666, 0.3333333333333333, 0.16666666666666666, 0.16666666666666666, 0.16666666666666666], [0.16666666666666666, 0.16666666666666666, 0.16666666666666666, 0.16666666666666666, 0.16666666666666666, 0.16666666666666666], 
[0.2, 0.2, 0.2, 0.2, 0.2]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...