Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 29, 2019 15:54:05

Areostar
Зарегистрирован: 2018-06-27
Сообщения: 164
Репутация: +  0  -
Профиль   Отправить e-mail  

Перемножение списков

надо перемножить два спискаю первы элемент первого списка второй со вторым и так далее

пишу:

  _vector = map(lambda x, y: x * y, self.vector, vec)

получаю в ответ
 TypeError: 'vector' object is not iterable

и self.vector и vec это списки

в чём ошибка?

Офлайн

#2 Июнь 29, 2019 16:59:42

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2849
Репутация: +  186  -
Профиль   Отправить e-mail  

Перемножение списков

 >>> s1 = range(10)
>>> s2 = range(10)
>>> [ x*y for x in s1 for y in s2 ]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 0, 4
, 8, 12, 16, 20, 24, 28, 32, 36, 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 0, 6, 12, 18, 24, 30, 36, 42, 48, 54, 0, 7, 14, 21, 28, 35, 42, 4
9, 56, 63, 0, 8, 16, 24, 32, 40, 48, 56, 64, 72, 0, 9, 18, 27, 36, 45, 54, 63, 72, 81]

> и self.vector и vec это списки

Смотри через отладчик что содержится в self.vector



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#3 Июнь 29, 2019 20:32:14

Areostar
Зарегистрирован: 2018-06-27
Сообщения: 164
Репутация: +  0  -
Профиль   Отправить e-mail  

Перемножение списков

.Мне надо просто перемножить первый на первый второй на второй третий на третий

решил так

  for i in range(len(self.vector)):
            self.vector[i] = self.vector[i] * vec.vector[i]

Но думаю можно по элегантней ))

Офлайн

#4 Июнь 29, 2019 21:47:58

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Перемножение списков

Areostar
решил так
стоп, почему у вас тут тут vec.vector а вверху просто vec
код рабочий, значит у вас всеже vec не список, а некий обьект,а уже в нем есть список, а чем вам и говорит интерпретатор.
попробуйте так:
 _vector = map(lambda x, y: x * y, self.vector, vec.vector)



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Офлайн

#5 Июнь 29, 2019 21:51:13

vic57
Зарегистрирован: 2015-07-07
Сообщения: 913
Репутация: +  127  -
Профиль  

Перемножение списков

 >>> l1 = range(10)
>>> l2 = l1[:]
>>> [x*y for x,y in zip(l1,l2)]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
>>> 

Отредактировано vic57 (Июнь 29, 2019 21:51:54)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version