Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 8, 2013 18:07:58

Pitahaya
Зарегистрирован: 2013-11-08
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Нужна помощь! сумма элементов двух списков списков.

Всем привет! Я совсем новичек в питоне и чтобы научиться решил написать проект, который будет уметь выполнять разные действия линейной алгебры, в перспективе решать системы линейных уравнений. Ну а пока пытаюсь понять, как сложить элементы двух списков списков. Подскажите, как это реализовать. Пока что дошел до того, что сделал ввод этих самых списков (как бы матриц) нужного размера. Так как же их сложить? (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)

Офлайн

#2 Ноя. 8, 2013 18:58:23

dimy44
От: Евпатория
Зарегистрирован: 2012-04-21
Сообщения: 463
Репутация: +  42  -
Профиль  

Нужна помощь! сумма элементов двух списков списков.

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)]

Офлайн

#3 Ноя. 8, 2013 20:21:55

Pitahaya
Зарегистрирован: 2013-11-08
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Нужна помощь! сумма элементов двух списков списков.

Спасибо, работает!
Можете только помочь разобраться в такой форме записи (все циклы в строчку), не совсем понятно, а хочется так же писать.
я понял, что:
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) :
и тут что-то еще не понятно что
Спасибо!

Отредактировано Pitahaya (Ноя. 8, 2013 20:26:27)

Офлайн

#4 Ноя. 8, 2013 20:29:47

dimy44
От: Евпатория
Зарегистрирован: 2012-04-21
Сообщения: 463
Репутация: +  42  -
Профиль  

Нужна помощь! сумма элементов двух списков списков.

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)

Офлайн

#5 Ноя. 8, 2013 20:51:53

Pitahaya
Зарегистрирован: 2013-11-08
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Нужна помощь! сумма элементов двух списков списков.

Спасибо, в целом стало понятно, буду разбираться)

Офлайн

#6 Ноя. 9, 2013 08:39:14

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Нужна помощь! сумма элементов двух списков списков.

Pitahaya
действия линейной алгебры, в перспективе решать системы линейных уравнений
Одна из сильных сторон питона - разнообразные и легко подключаемые библиотеки. Чем писать операции линейной алгебры, написанные уже миллион раз, посмотрите лучше описание numpy scipy sympy. А тренироваться лучше создавая новое.
Тем море - начиная с системы управления вертолетом по ИК каналу и кончая проектами по поиску инопланетян. Какая тема вам западет в душу вам и виднее. Считаю что надо осваивать питон на достаточно больших проектах, будет и интереснее и полезнее. Для начала можно заглянуть в раздел проекты, хотя там и бедненько.



Офлайн

#7 Ноя. 14, 2013 13:40:01

Pitahaya
Зарегистрирован: 2013-11-08
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Нужна помощь! сумма элементов двух списков списков.

doza_and, спасибо за совет. Дело в том, что это вообще мой первый язык и я хочу сначала освоить простенькие задачки, разобраться с синтаксисом языка, со стандартными библиотеками, прочитать пару умных книг, освоить ООП, а когда стану более-менее ориентироваться, буду пробовать писать что-нибудь посложнее. Вообще планирую написать на django что-то вроде интранет-портала; ну это все в планах

ну а матрицы мне нужны для вуза

Отредактировано Pitahaya (Ноя. 14, 2013 13:45:17)

Офлайн

#8 Ноя. 14, 2013 19:47:18

Pitahaya
Зарегистрирован: 2013-11-08
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Нужна помощь! сумма элементов двух списков списков.

Возник новый вопрос.
Подскажите, как в питоне перемножить между собой все элементы списка? Нашел статью, где написано, что в питоне это вообще нельзя сделать, но как же тогда быть?

Офлайн

#9 Ноя. 14, 2013 20:30:02

smoke853
Зарегистрирован: 2012-10-02
Сообщения: 123
Репутация: +  15  -
Профиль   Отправить e-mail  

Нужна помощь! сумма элементов двух списков списков.

from functools import reduce
from operator import mul
lst = [1, 2, 3, 4, 5]
print(reduce(mul, lst))
# Ответ: 120

Офлайн

#10 Ноя. 14, 2013 20:32:24

Singularity
Зарегистрирован: 2011-07-28
Сообщения: 1387
Репутация: +  75  -
Профиль   Отправить e-mail  

Нужна помощь! сумма элементов двух списков списков.

reduce(lambda res, x: res*x, [2, 3, 4, 5, 6], 1)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version