Проблемы с добавлением кортежей из списка в другой и печать его

-2
задан Marcos Santos 19 January 2019 в 09:04
поделиться

1 ответ

Задача

Вы выбрасываете кортеж x при создании нового списка:

        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

0
ответ дан Patrick Artner 19 January 2019 в 09:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: