Форум сайта python.su
0
Вообщем вот программа выдаёт ошибку: “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
Офлайн
1
ты пытаешься сделать лист из десяти конструкций (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]]
>>>
Офлайн
0
И как выводить этот массив прямоугольником в версии 3?
Офлайн
1
Третью не видел, но не думаю, что она кардинально отличается
>>> 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]
>>>
Офлайн
36
если нужно форматирование, то можно так, на пример:
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)
Офлайн