У меня есть матрица, подобная следующей (произвольные столбцы/строки):
1 0 0 0 0
1 2 0 0 0
1 2 3 0 0
1 2 3 4 0
1 2 3 4 5
1 2 5 0 0
1 2 5 3 0
1 2 5 3 4
1 4 0 0 0
1 4 2 0 0
1 4 2 3 0
1 4 2 5 0
1 4 2 5 3
1 4 5 0 0
1 4 5 3 0
2 0 0 0 0
2 3 0 0 0
2 3 4 0 0
2 3 4 5 0
2 5 0 0 0
2 5 3 0 0
2 5 3 4 0
3 0 0 0 0
3 4 0 0 0
3 4 2 0 0
3 4 2 5 0
3 4 5 0 0
и теперь я хочу получить все строки, где первый элемент - это определенное значение X, а последний элемент (то есть последний элемент! = 0) - это определенное значение Y, ИЛИ повернуто: первый - Y, а последний - X .
Не вижу никакого быстрого кода, который НЕ использует цикл for :( Спасибо!
EDIT: отфильтровать все строки с определенным первым элементом очень просто, вам не нужно мне здесь помогать. Итак, давайте предположим, что я хочу сделать только следующее: отфильтровать все строки, где последний элемент (т. е. последний элемент! = 0 в каждой строке) равен X или Y.
EDIT Большое спасибо за ваши сообщения. Я сравнил три возможных решения с матрицей из 473408*10 элементов. Вот тестовый скрипт: http://pastebin.com/9hEAWw9a.
Результаты были следующими:
t1 = 2.9425 Jonas
t2 = 0.0999 Brendan
t3 = 0.0951 Oli
Так что большое спасибо, ребята, я придерживаюсь решения Оли и поэтому принимаю его. Спасибо за все остальные решения!