Найти - Пользователи
Полная версия: Перемножение списков
Начало » Python для новичков » Перемножение списков
1
Areostar
надо перемножить два спискаю первы элемент первого списка второй со вторым и так далее

пишу:
  _vector = map(lambda x, y: x * y, self.vector, vec)

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

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

в чём ошибка?
Rodegast
 >>> 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
Areostar
.Мне надо просто перемножить первый на первый второй на второй третий на третий

решил так

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

Но думаю можно по элегантней ))
PEHDOM
Areostar
решил так
стоп, почему у вас тут тут vec.vector а вверху просто vec
код рабочий, значит у вас всеже vec не список, а некий обьект,а уже в нем есть список, а чем вам и говорит интерпретатор.
попробуйте так:
 _vector = map(lambda x, y: x * y, self.vector, vec.vector)
vic57
 >>> l1 = range(10)
>>> l2 = l1[:]
>>> [x*y for x,y in zip(l1,l2)]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
>>> 
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