2015-11-09 3 views
1

Итак, я пытаюсь создать сетку, которая может иметь отдельные «квадраты сетки», замененные любым заданным символом. Сетка работает нормально, но она составлена ​​из списков в списках.Замена элемента списка в элементе списка со строкой

Вот код

size = 49 
feild = [] 
for i in range(size): 
    feild.append([]) 
for i in range(size): 
    feild[i].append("#") 
feild[4][4] = "@" #This is one of the methods of replacing that I have tried 
for i in range(size): 
    p_feild = str(feild) 
    p_feild2 = p_feild.replace("[", "") 
    p_feild3 = p_feild2.replace("]", "") 
    p_feild4 = p_feild3.replace(",", "") 
    p_feild5 = p_feild4.replace("'", "") 
    print(p_feild5) 

Как вы можете видеть, что это один из способов, который я пытался заменить элементы, я также пытался:

feild[4[4]] = "@" 

и

feild[4] = "@" 

Первый заменяет все «#» 4 элемента слева на «@» Второй дает t он следующие ошибки

TypeError: 'int' object is not subscriptable 

ответ

1

сделать сетку # с строки 3, столбец 3 заменен @:

>>> size = 5 
>>> c = '#' 
>>> g = [size*[c] for i in range(size)] 
>>> g[3][3] = '@' 
>>> print('\n'.join(' '.join(row) for row in g)) 
# # # # # 
# # # # # 
# # # # # 
# # # @ # 
# # # # # 
+0

Если я это сделаю, я получу сетку целиком из «@», я просто хочу заменить один элемент – ayNONE

+0

@AYNONE Я обновил ответ, чтобы вы могли индивидуально изменять любой столбец строк. – John1024

+0

Да, это отлично работает! – ayNONE

0

Может быть, вы ищете это: -

size = 49 
feild = [] 
for i in range(size): 
    feild.append([]) 
for i in range(size): 
    map(feild[i].append, ["#" for _ in xrange(size)]) 
i = 4 
feild[i][0] = "@" 
+0

Но не будет создавать несколько «@». Я просто хочу заменить определенные квадраты сетки. – ayNONE

+0

Не проблема, которая когда-либо квадрат квадрата вы хотите заменить, просто укажите его индекс строки как i в feild [i] [0] –

+0

Это заменяет всю сетку, если я оставлю ее как i. Если я изменю i, это будет целая строка. – ayNONE

Смежные вопросы