Найти - Пользователи
Полная версия: Как присваивать значению элементу массива
Начало » Python для новичков » Как присваивать значению элементу массива
1
Gray5
Вообщем вот программа выдаёт ошибку: “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
alexzander77
ты пытаешься сделать лист из десяти конструкций (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]]
>>>
Gray5
И как выводить этот массив прямоугольником в версии 3?
alexzander77
Третью не видел, но не думаю, что она кардинально отличается
>>> 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, но я его не пользовал
pyuser
если нужно форматирование, то можно так, на пример:
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)
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