Форум сайта python.su
0
Всем привет! Я совсем новичек в питоне и чтобы научиться решил написать проект, который будет уметь выполнять разные действия линейной алгебры, в перспективе решать системы линейных уравнений. Ну а пока пытаюсь понять, как сложить элементы двух списков списков. Подскажите, как это реализовать. Пока что дошел до того, что сделал ввод этих самых списков (как бы матриц) нужного размера. Так как же их сложить? (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)
'''
Отредактировано Pitahaya (Ноя. 8, 2013 18:09:28)
Офлайн
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)]
Офлайн
0
Спасибо, работает!
Можете только помочь разобраться в такой форме записи (все циклы в строчку), не совсем понятно, а хочется так же писать.
я понял, что:
zip (A, B) - превращают наши A, B в
[([1, 2, 3], [2, 3, 4]), ([4, 5, 6], [5, 6, 7]), ([7, 8, 9], [8, 9, 10])]
([1, 2, 3], [2, 3, 4]) в ([1,2], [2,3], [3, 4])
([1,2], [2,3], [3, 4])
[1,2], [2,3]
)for y in zip(A, B) :
for x in zip(*y) :
и тут что-то еще не понятно что
Отредактировано Pitahaya (Ноя. 8, 2013 20:26:27)
Офлайн
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)
Офлайн
0
Спасибо, в целом стало понятно, буду разбираться)
Офлайн
253
PitahayaОдна из сильных сторон питона - разнообразные и легко подключаемые библиотеки. Чем писать операции линейной алгебры, написанные уже миллион раз, посмотрите лучше описание numpy scipy sympy. А тренироваться лучше создавая новое.
действия линейной алгебры, в перспективе решать системы линейных уравнений
Офлайн
0
doza_and, спасибо за совет. Дело в том, что это вообще мой первый язык и я хочу сначала освоить простенькие задачки, разобраться с синтаксисом языка, со стандартными библиотеками, прочитать пару умных книг, освоить ООП, а когда стану более-менее ориентироваться, буду пробовать писать что-нибудь посложнее. Вообще планирую написать на django что-то вроде интранет-портала; ну это все в планах
ну а матрицы мне нужны для вуза
Отредактировано Pitahaya (Ноя. 14, 2013 13:45:17)
Офлайн
0
Возник новый вопрос.
Подскажите, как в питоне перемножить между собой все элементы списка? Нашел статью, где написано, что в питоне это вообще нельзя сделать, но как же тогда быть?
Офлайн
15
from functools import reduce from operator import mul lst = [1, 2, 3, 4, 5] print(reduce(mul, lst))
# Ответ: 120
Офлайн
75
reduce(lambda res, x: res*x, [2, 3, 4, 5, 6], 1)
Офлайн