У меня есть матрица, подобная следующей (произвольные столбцы / строки):
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
Так что, ребята, большое спасибо, я придерживаюсь решения Олии, таким образом, принять его. Спасибо за все другие решения!