Уведомления

Группа в Telegram: @pythonsu

#1 Март 1, 2012 16:21:37

Gray5
От:
Зарегистрирован: 2012-02-29
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Как присваивать значению элементу массива

Вообщем вот программа выдаёт ошибку: “TypeError: ‘generator’ object does not support item assignment”

x=list((0 for a in range(10))for b in range(10))
o=int(input("x"))
x[o][o]=1



Офлайн

#2 Март 1, 2012 17:15:53

alexzander77
От:
Зарегистрирован: 2009-01-27
Сообщения: 46
Репутация: +  1  -
Профиль   Отправить e-mail  

Как присваивать значению элементу массива

ты пытаешься сделать лист из десяти конструкций (0 for a in range(10)), кои сами по себе - генераторы

чтобы получить не генератор а список - еще раз применить лист

>>> x=list( list(0 for a in  range(3)) for b in range(3) )
>>> x
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
>>> x[1][2]=5
>>> x
[[0, 0, 0], [0, 0, 5], [0, 0, 0]]
>>>
>>> x=[ [0 for a in range(3) ] for b in range(3)]
>>> x
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
>>> x[1][2]=7
>>> x
[[0, 0, 0], [0, 0, 7], [0, 0, 0]]
>>>



Офлайн

#3 Март 1, 2012 17:52:00

Gray5
От:
Зарегистрирован: 2012-02-29
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Как присваивать значению элементу массива

И как выводить этот массив прямоугольником в версии 3?



Офлайн

#4 Март 1, 2012 19:07:40

alexzander77
От:
Зарегистрирован: 2009-01-27
Сообщения: 46
Репутация: +  1  -
Профиль   Отправить e-mail  

Как присваивать значению элементу массива

Третью не видел, но не думаю, что она кардинально отличается

>>> x
[[0, 0, 0], [0, 0, 5], [0, 0, 0]]
>>> for i in x:print i

[0, 0, 0]
[0, 0, 5]
[0, 0, 0]
>>>
хотя если принт переделали как функцию, то его можно использовать в map
map(print,x)

еще, по слухам, где-то есть преттиПринт pprint, но я его не пользовал



Офлайн

#5 Март 2, 2012 04:50:54

pyuser
От:
Зарегистрирован: 2007-05-13
Сообщения: 658
Репутация: +  36  -
Профиль   Отправить e-mail  

Как присваивать значению элементу массива

если нужно форматирование, то можно так, на пример:

m = [(1, 2, 3, 4, 5), (6, 7, 8, 9, 10), (11, 12, 13, 14, 15)]
any(print(" ".join("{:06E}".format(y) for y in x)) for x in m)



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version