Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
37 / 31 / 13
Регистрация: 08.12.2012
Сообщений: 810

Почему все списки заполнены единицами?

12.07.2024, 00:11. Показов 404. Ответов 5

Студворк — интернет-сервис помощи студентам
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
n = int(input())
a = [[0] * n] * n
 
for i in range(n):
    a[i][i] = 1
 
for i in a:
    print(j)
 
[1, 1, 1, 1, 1]
[1, 1, 1, 1, 1]
[1, 1, 1, 1, 1]
[1, 1, 1, 1, 1]
[1, 1, 1, 1, 1]
почему все списки заполнены единицами?
а если range(1) т.е. i в цикле принимает всего одно значение,
при этом все нулевые индексы всех списков заполнены единицами
но ведь a[i][i] всегда имело индексы = 0 a[0][0] и единицу должен получить
только список под индексом 0 и элементом с индексом 0, а получают по единице
все элементы с индексом 0 во всех списках
Python
1
2
3
4
5
6
7
8
9
10
for i in range(1):
    a[i][i] = 1
 
[1, 0, 0, 0, 0]
[1, 0, 0, 0, 0]
[1, 0, 0, 0, 0]
[1, 0, 0, 0, 0]
[1, 0, 0, 0, 0]
 
[[1, 0, 0, 0, 0], [1, 0, 0, 0, 0], [1, 0, 0, 0, 0], [1, 0, 0, 0, 0], [1, 0, 0, 0, 0]]
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.07.2024, 00:11
Ответы с готовыми решениями:

В фильтре запроса не заполнены выпадающие списки
Я создаю запрос к серверу, открываю его в виде таблицы и хочу, чтобы у пользователя была возможность пользоваться всеми преимуществами...

Проверить все ли поля заполнены
Надо проверить все ли инпуты заполнены, проверку правильности e-mail и проверка капчи <form method="post"...

Списки, списки, списки. не все так просто
Написать функцию, которая принимает 2 списка, содержащие одинаковое число строк, затем изменяет списки сопоставляя строки, занимающие...

5
Эксперт Python
 Аватар для Red white socks
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
12.07.2024, 07:17
Это пишется во всех учебниках. Питон работает не с объектами, а с ссылками на объекты.
Python
1
[0] * n
создает список и возвращает ссылку на этот список.
А дальше уже создается список из ссылок на этот самый список.
1
37 / 31 / 13
Регистрация: 08.12.2012
Сообщений: 810
12.07.2024, 10:03  [ТС]
Цитата Сообщение от Red white socks Посмотреть сообщение
создает список и возвращает ссылку на этот список
но мы же обращаемся к каждому элементу списка по индексу и также можем менять его
и если это вложенный список при этом не меняются все его значения
например, если мне помнится, в паскале, главную диагональ можно было
заполнить любыми значениями 2 простыми вышеприведенными строчками кода
Python
1
2
for i in range(1):
    a[i][i] = 1
а в пайтоне это какой-то ужоссс
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
12.07.2024, 10:19
ujif, ты ничего не понял. Вот, то же самое простыми словами
Code
1
2
3
4
5
6
7
8
v = [список, который лежит где-то в памяти]
z = [
ссылка на v,
ссылка на v,
ссылка на v,
ссылка на v,
ссылка на v
]
В любом месте поменял значение в списке v - поменялось везде.

Добавлено через 1 минуту
Чтобы было как ты хочешь, двухмерный список нужно создавать листкомпсом, а не как у тебя.
2
37 / 31 / 13
Регистрация: 08.12.2012
Сообщений: 810
12.07.2024, 13:04  [ТС]
Цитата Сообщение от iSmokeJC Посмотреть сообщение
ты ничего не понял
если бы до вашего коммента не прогнал все списки по id()
и также проверил как ведет себя листкомпс
хотя и при a = [[0] * n] * n и листкомпсом, id(a[0][0]), id(a[1][0])
ссылаются на одну и ту же ячейку памяти но в первом случае
при замене одного элемента, меняются все с похожими индексами,
а листкомпсом только в определенном списке
но до сих пор не понимаю, как такое возможно
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38168 / 21103 / 4307
Регистрация: 12.02.2012
Сообщений: 34,691
Записей в блоге: 14
12.07.2024, 17:59
ujif,

Python
1
2
3
4
5
6
7
8
9
10
11
n = int(input())
 
#a = [[0] * n] * n
 
a=[[0 for _ in range(n)] for _ in range(n)] 
 
for i in range(n):
    a[i][i] = 1
 
for j in a:
    print(j)
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.07.2024, 17:59
Помогаю со студенческими работами здесь

Проверить, заполнены ли все поля ввода
как сделать что-бы если в определенном поле не было числа, в лейбл вывести что то вроде :"вы ввели не все числа, проверьте бла...

Проверить все ли поля структуры заполнены
Добрый день. Мне нужно проверить все ли поля экземпляра структуры заполнены. Допустим, есть такая структура : struct Human { ...

Проверка что все textbox-ы заполнены
есть такая проблема. есть очень много текст боксов и всего другого. Нужно написать код в котором бы проверялось заполнены ли все...

Заменить в исходной строке символов все единицы нулями и все нули единицами
Cоставить процедуру заменяющую в исходной строке символов все единицы нулями и все нули единицами. Замена должна выполняться,начиная с...

В матрице все отрицательные элементы преобразовать в положительные, а все нули заменить единицами
В массиве B(m,n) все отрицательные элементы преобразовать в положительные, а все нули заменить единицами ( без рандома можно если)


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru