Задача
Вы выбрасываете кортеж x
при создании нового списка:
blockquote>if x[0] == n: l_c.append(x) # here you append x else: print(l_c) # here you print but do nothing with x l_c = [] # list empty, x is missing n+=1
] Solution
def representacao_do_mapa(modo): if modo == 1: n=0 l_c = [] for x in area: if x[0] == n: l_c.append(x) else: print(l_c) l_c = [x] # fix here n+=1 print(l_c) # fix here representacao_do_mapa(1)
Кроме того, ваш последний список не будет напечатан, потому что последний
l_c
никогда не попадет в печатную часть вашего кода - вы должны добавить это Вокруг области цикла.Вывод (для
n_vertical = 3
иn_horizontal = 3
:[(0, 0, 0), (0, 1, 0), (0, 2, 0)] [(1, 0, 0), (1, 1, 0), (1, 2, 0)] [(2, 0, 0), (2, 1, 0), (2, 2, 0)]
Оптимизации:
Вы можете сократить свой код, используя списки и списки разложение:
n_vertical = 3 n_horizontal = 3 area = [ (x,y,0) for x in range(n_horizontal) for y in range(n_vertical )] # create with inner lists area2 = [ [(x,y,0) for x in range(n_horizontal)] for y in range(n_vertical)] print(area) # print each inner list on new line print(*area2, sep="\n")
Или вы можете распечатать напрямую из
area
:print(* (area[i*n_horizontal:i*n_horizontal+n_horizontal] for i in range(n_vertical)) , sep="\n")
, используя выражение генератора для нарезки
]area
наn_horizontal
частей.
Подробнее о выражениях генератора / списка: Выражения генератора и понимание списка
Подробнее о списках чанков: Как разбить список на куски одинакового размера ?
Подробнее о нарезке списка: Понимание обозначения фрагмента
Подробнее о печати: https://docs.python.org/3/library /functions.html#print