Как пропустить индекс, когда индексирование выходит за пределы диапазона [Python] - PullRequest
0 голосов
/ 14 мая 2018

Моя матрица:

[['f', 'e', 'e', 'd'], ['t', 'h', 'e', 'd'], ['o', 'g']]

Код:

for i in range(cols):
            result = ""
            for j in range(rows):
                result += matrix[j][i]
            temp.append(result)
        return(" ".join(temp))

Когда я запускаю цикл, который должен захватывать элементы по строкам, он выдает ошибку, как толькодостигнут элемент (строка = 3, столбец = 3) в последнем ряду, которого нет.Можно ли каким-либо образом пропустить элемент, которого нет, задав любое условие, например пропустить, если индекс не существует, и снова перейти к следующей первой строке?

Ответы [ 3 ]

0 голосов
/ 14 мая 2018

Одним из способов для этого является использование try-except для обработки исключений (IndexError) любым удобным для вас способом. Но то, что вы пытаетесь сделать, - это объединение символов в каждом подсписке, что можно сделать более питоническим способом, таким как понимание списка.

In [1]: a = [['f', 'e', 'e', 'd'], ['t', 'h', 'e', 'd'], ['o', 'g']]
In [2]: [''.join(sub) for sub in a]
Out[2]: ['feed', 'thed', 'og']

А для окончательного результата вы можете использовать другой метод join следующим образом:

In [3]: " ".join([''.join(sub) for sub in a])
Out[3]: 'feed thed og'
0 голосов
/ 14 мая 2018

Вы можете пропустить все индексы вместе, поскольку цикл python for равен для каждого цикла .

result = ""
for column in row:
    for element in column:
        result += element
0 голосов
/ 14 мая 2018

Вы можете попробовать свой код в попытке ... кроме блока

try:
    result += matrix[j][i]
except IndexError: 
    pass
...