@Andrei1penguin1

Как взять срез всех дочерних списков?

Доброго времени суток, предположим, что есть следующая матрица:
a = [
    [0, 1, 2, 3, 4],
    [5, 6, 7, 8, 9],
    [10, 11, 12, 13, 14],
    [15, 16, 17, 18, 19],
    [20, 21, 22, 23, 24]
]

Допустим, на выходе нам нужна следующая матрица:
a = [
    [6, 7, 8],
    [11, 12, 13],
    [16, 17, 18]
]

То есть нам нужно отбросить первый и последний массив из матрицы, а затем в трех оставшихся массивах отбросить также первый и последний элемент
Можно реализовать циклом, или генератором списка, что поэлегантнее, но есть ли более краткое решение-сделать это с помощью срезов?
Что-то вроде этого:
a[1:4][:][1:4]
Но это, разумеется, не работает
  • Вопрос задан
  • 87 просмотров
Решения вопроса 1
kshnkvn
@kshnkvn Куратор тега Python
yay ✌️ t.me/kshnkvn
list(map(lambda x: x[1:-1], a[1:-1]))
# [[6, 7, 8], [11, 12, 13], [16, 17, 18]]
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
hottabxp
@hottabxp Куратор тега Python
Миллиардер. Честно, 100 пистонов!
for x in a[1:-1]:
	print(x[1:4])

[6, 7, 8]
[11, 12, 13]
[16, 17, 18]


Еще вариант:
def test(l):
	return l[1:-1]

print(list(map(test,a[1:-1][:])))

[[6, 7, 8], [11, 12, 13], [16, 17, 18]]
Ответ написан
Ваш ответ на вопрос

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

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