@Span4ev

Почему индекс нулей в списке равен нулю?

grid = [
	[0,1,0],
	[0,0,0],
	[0,0,2],
]

used = []
count = 0

for i in grid:
	for k in i:
		if k == 0:
			index = i.index(k)
			used.append([count, index])
	count += 1

for i in used:
    print(i)
# [0, 0]
# [0, 0]
# [1, 0]
# [1, 0]
# [1, 0]
# [2, 0]
# [2, 0]


Однако если я пытаюсь получить индекс не 0, то всё нормально: получаю номер строки и индекс элемента. Некая особенность получения индекса у элемента равного нулю?

for i in grid:
	for k in i:
		if k != 0:
			index = i.index(k)
			used.append([count, index])
#[0, 1]
# [2, 2]


[0, 1]
[2, 2]

https://www.online-python.com/GKNY802AOe

Потыкав, понял, что индексируются только первые нули в списке, остальные игнорируются. Как получать индекс множества нулей, не переводя нули в строковое значение или нечто в этом роде?
  • Вопрос задан
  • 103 просмотра
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
У тебя в строках массива несколько нулей. Метод index() по умолчанию находит только первое искомое значение. Если бы ты почитал документацию, ты бы это понял, и увидел, как это обойти.

list.index(x[, start[, end]])

Return zero-based index in the list of the first item whose value is equal to x. Raises a ValueError if there is no such item.

The optional arguments start and end are interpreted as in the slice notation and are used to limit the search to a particular subsequence of the list. The returned index is computed relative to the beginning of the full sequence rather than the start argument.


Вообще, раз уж ты ручками перебираешь строки и ячейки матрицы, используй enumerate().
for i_row, row in enumerate(grid):  # row == grid[i_row]
    for i_col, value in enumerate(row):  # value == row[i_col]
        # далее сам
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
Перебирать данные циклами и сравнивать с нулем. Тогда индекс будет получаться автоматически.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы