Найти - Пользователи
Полная версия: Нужна помощь! сумма элементов двух списков списков.
Начало » Python для новичков » Нужна помощь! сумма элементов двух списков списков.
1 2
Pitahaya
Всем привет! Я совсем новичек в питоне и чтобы научиться решил написать проект, который будет уметь выполнять разные действия линейной алгебры, в перспективе решать системы линейных уравнений. Ну а пока пытаюсь понять, как сложить элементы двух списков списков. Подскажите, как это реализовать. Пока что дошел до того, что сделал ввод этих самых списков (как бы матриц) нужного размера. Так как же их сложить? (P.S. Матрица C - должна быть матрицей, каждый элемент которой - сумма таких же элементов матриц A и Б)
#!/usr/bin/python3
# -*- coding: utf-8 -*-

import math

#Считаем сумму двух, заданных пользователем матриц.

#Вводим размер матриц
m = int(input('Элементов в строке в матрицах: '))
n = int(input('Элементов в солбце в матрицах: '))
print('Вводим элементы матрицы A')
#Вводим элементы матрицы A
A = []
for i in range(n) :
A.append([])
for j in range(m) :
A[i].append(int(input()))
print('A = ')
for q in A :
print(q)
print('Вводим элементы матрицы B')
#Вводим элементы матрицы B
B = []
for q in range(n) :
B.append([])
for w in range(m) :
B[q].append(int(input()))
print('B = ')
for q in B :
print(q)
#C = A + B
C = []
'''
for z in range(n) :
C.append([])
for x in range(m) :

C[z].append(sum)
print(C)
'''
dimy44
A = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
B = [[2, 3, 4], [5, 6, 7], [8, 9, 10]]
C = [[sum(x) for x in zip(*y)] for y in zip(A, B)]
Pitahaya
Спасибо, работает!
Можете только помочь разобраться в такой форме записи (все циклы в строчку), не совсем понятно, а хочется так же писать.
я понял, что:
zip (A, B) - превращают наши A, B в
[([1, 2, 3], [2, 3, 4]), ([4, 5, 6], [5, 6, 7]), ([7, 8, 9], [8, 9, 10])]
for y in zip(A, B) - перебирают последовательно эти три записи в нашем получившемся списке.
zip(*y) - превращает наши кортежи, например
 ([1, 2, 3], [2, 3, 4]) в ([1,2], [2,3], [3, 4]) 
и т.д
for x in zip(*y) перебирает последовательно
 ([1,2], [2,3], [3, 4]) 
и т.д
sum(x) - суммирует
 [1,2], [2,3] 
и т.д. (это я все скорее для себя написал)
вот только не понимаю как вы это все записали так хитро (для меня), научите, пожалуйста.
я понимаю, что такая запись эквивалентна:
for y in zip(A, B) :
for x in zip(*y) :
и тут что-то еще не понятно что
Спасибо!
dimy44
A = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
B = [[2, 3, 4], [5, 6, 7], [8, 9, 10]]
C = []
for y in zip(A, B):
    lst = []
    for x in zip(*y):
        lst.append(sum(x))
    C.append(lst)
Pitahaya
Спасибо, в целом стало понятно, буду разбираться)
doza_and
Pitahaya
действия линейной алгебры, в перспективе решать системы линейных уравнений
Одна из сильных сторон питона - разнообразные и легко подключаемые библиотеки. Чем писать операции линейной алгебры, написанные уже миллион раз, посмотрите лучше описание numpy scipy sympy. А тренироваться лучше создавая новое.
Тем море - начиная с системы управления вертолетом по ИК каналу и кончая проектами по поиску инопланетян. Какая тема вам западет в душу вам и виднее. Считаю что надо осваивать питон на достаточно больших проектах, будет и интереснее и полезнее. Для начала можно заглянуть в раздел проекты, хотя там и бедненько.
Pitahaya
doza_and, спасибо за совет. Дело в том, что это вообще мой первый язык и я хочу сначала освоить простенькие задачки, разобраться с синтаксисом языка, со стандартными библиотеками, прочитать пару умных книг, освоить ООП, а когда стану более-менее ориентироваться, буду пробовать писать что-нибудь посложнее. Вообще планирую написать на django что-то вроде интранет-портала; ну это все в планах

ну а матрицы мне нужны для вуза
Pitahaya
Возник новый вопрос.
Подскажите, как в питоне перемножить между собой все элементы списка? Нашел статью, где написано, что в питоне это вообще нельзя сделать, но как же тогда быть?
smoke853
from functools import reduce
from operator import mul
lst = [1, 2, 3, 4, 5]
print(reduce(mul, lst))
# Ответ: 120
Singularity
reduce(lambda res, x: res*x, [2, 3, 4, 5, 6], 1)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB