Вы можете попробовать что-то вроде:
f[list_, item_] := list[[1 ;; Position[list, item][[1, 1]]]]
Использование:
f[{1, 2, 3, 4, 1, 4, 3, 4, 3, 5, 6, 7, 3, 2}, 3]
(*
->{1,2,3}
*)
f[{1, 2, 3, 4, 1, 4, 3, 4, 3, 5, 6, 7, 3, 2}, 5]
(*
->{1,2,3,4,1,4,3,4,3,5}
*)
Если вы также хотите отфильтровать значения больше 3, вы можете просто использовать мой код, оборачивающий мой:
g[list_, item_] := Select[list[[1 ;; Position[list, item][[1, 1]]]], # <= 3 &]
так:
g[{-1, 1, 2, 5, 7, 1, 3, 4, 1, 4, 3, 4, 3, 5, 6, 7, 3, 2}, 3]
(*
->{-1,1,2,1,3}
*)