Уведомления

Группа в Telegram: @pythonsu

#1 Март 25, 2018 18:29:37

lupanton
Зарегистрирован: 2018-03-25
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

Двумерный массив

Добрый день!
Создаю двумерный массив, заполненный 0. Нужно для всех элементов массива, у которых i > j, установить значение 1.

Вот такой код:

 n = int(input()) #Значение n
a = [['0'] *n] * n #Создаю массив, заполненный 0
for i in range(n): # Цикл для обхода массива
    for j in range(n):
        if i > j:
            a[i][j] = 1
for row in a:
    print(' '.join([str(elem) for elem in row]))

Выдает:
1 1 1 1 0
1 1 1 1 0
1 1 1 1 0
1 1 1 1 0
1 1 1 1 0

Мне нужно:
0 0 0 0 0
1 0 0 0 0
1 1 0 0 0
1 1 1 0 0
1 1 1 1 0

Подскажите, пожалуйста, где ошибка?

Отредактировано lupanton (Март 25, 2018 18:31:00)

Офлайн

#2 Март 25, 2018 19:08:16

Romissevd
От: Счастье
Зарегистрирован: 2015-03-01
Сообщения: 533
Репутация: +  76  -
Профиль   Отправить e-mail  

Двумерный массив

Здесь проблема в том, как ты создаешь список изначально. Вот тут немного написано об этом.

 n = int(input()) #Значение n
a = [ [0] * n for i in range(n)] #Создаю массив, заполненный 0
for i in range(n): # Цикл для обхода массива
    for j in range(n):
        if i > j:
            a[i][j] = 1
for row in a:
    print(' '.join([str(elem) for elem in row]))

Офлайн

#3 Март 25, 2018 19:16:53

vic57
Зарегистрирован: 2015-07-07
Сообщения: 913
Репутация: +  127  -
Профиль  

Двумерный массив

 #a = [ [0] * n for i in range(n)] #Создаю массив, заполненный 0
>>>a = [[0 for j in range(n)] for i in range(n)]
>>> a = [[1 if i>j else 0 for j in range(3)] for i in range(3)]
>>> for i in a: print(i)
[0, 0, 0]
[1, 0, 0]
[1, 1, 0]
>>> 

Отредактировано vic57 (Март 25, 2018 19:21:52)

Офлайн

#4 Март 25, 2018 19:32:49

lupanton
Зарегистрирован: 2018-03-25
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

Двумерный массив

Спасибо! Разобрался.

 n = int(input())
a = [ ['.'] * n for i in range(n)]
for i in range(n):
        for j in range(n):
        if i > j:
            a[i][j] = 1
for row in a:
    print(' '.join([str(elem) for elem in row]))

Выдает то, что надо:
0 0 0 0 0
1 0 0 0 0
1 1 0 0 0
1 1 1 0 0
1 1 1 1 0

Отредактировано lupanton (Март 25, 2018 20:32:53)

Офлайн

#5 Март 25, 2018 19:55:03

marvellik
Зарегистрирован: 2016-05-15
Сообщения: 639
Репутация: +  73  -
Профиль   Отправить e-mail  

Двумерный массив

 a = [[ 0 for _ in range(n)] for _ in range(n)] #Создаю массив, заполненный 0
строка
 a[i][i] = 0
теперь лишняя

Отредактировано marvellik (Март 25, 2018 19:55:32)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version