Ошибка при умножении каждого элемента в списке внутри 2D-массива - PullRequest
0 голосов
/ 22 февраля 2020

Быстрый вопрос о умножении элементов внутри списка:

У меня есть список из 5 списков внутри списка, содержащий два значения с плавающей запятой каждое.

str_list = [[-8.0, 0.070879], [-67.0, 0.263145], [92.0, 0.034718], [19.0, 0.231517], [35.0, 0.399741]]

Теперь я пытаюсь умножьте каждый из этих элементов по отдельности, а затем напечатайте их в список, содержащий 5 умноженных переменных:

num_list = [-0.567032, -17.630715, 3.194056, 4.398823, 13.990935]

Вот код, который я использую, но вывод не тот, который нужен выше.

num_list = []
for pair in str_list:
        for x in pair:
            product = 1
            product = product * x
            num_list.append(x)

Я получаю результат

[0.070879, 0.263145, 0.034718, 0.231517, 0.399741]

, что означает, что программа берет только вторую половину моих списков и фактически ничего не умножает.

Кажется, это очень основная c ошибка, которую я не вижу. Спасибо за помощь.

Ответы [ 2 ]

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

Один вкладыш в Python с использованием понимания списка (Если ваш внутренний список всегда будет иметь только два целых числа):

str_list = [[-8.0, 0.070879], [-67.0, 0.263145], [92.0, 0.034718], [19.0, 0.231517], [35.0, 0.399741]]

print([i[0]*i[1] for i in str_list])

Выходы:

[-0.567032, -17.630715000000002, 3.194056, 4.398823, 13.990935]

Один вкладыш, используя functools (обрабатывает любое количество целых чисел в вашем внутреннем списке):

from functools import reduce
num_list = [reduce(lambda x, y: x*y, i) for i in str_list]
print(num_list)

В вашем коде много проблем. Проблемы перечислены ниже:

  1. переменная product должна быть перемещена из внутреннего для l oop во внешнее для l oop, так как она повторно инициализируется в 1 для каждого элемента пары в Ваш список.
  2. Вы должны добавить product, а не x в ваш num_list.
  3. Вы должны добавить продукт в вашем внешнем виде для l oop (не в вашем внутреннем для l oop)

Правильный способ сделать это:

num_list = []
for pair in str_list:
        product = 1
        for x in pair:
            product *= x
        num_list.append(product)

print(num_list)
0 голосов
/ 22 февраля 2020

Вы ошиблись логи c.

num_list = []
for pair in str_list:
    product = 1
    for x in pair:
        product = product * x
    num_list.append(x)

Спасибо

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