Hier ist, was ich habe...
Select[roll, # <= 3 &]
Die folgende Liste kann eine 3 oder zwei 3en enthalten. Ich möchte, dass sie bei der ersten Drei von links nach rechts aufhört.
Mathematiker, der versucht zu programmieren.
Hier ist, was ich habe...
Select[roll, # <= 3 &]
Die folgende Liste kann eine 3 oder zwei 3en enthalten. Ich möchte, dass sie bei der ersten Drei von links nach rechts aufhört.
Mathematiker, der versucht zu programmieren.
Hinweis : Ich habe mein ursprüngliches Posting entfernt, das im Wesentlichen wie das von belisarius war. Hier ist ein weiterer Versuch...
Wenn Sie sicher sind, dass die Zahl 3 ein Mitglied von roll
dann sollte dies funktionieren:
TakeWhile[roll, # != 3 &]~Append~3
Dies ist gleichbedeutend mit:
Take[roll, LengthWhile[roll, # != 3 &] +1]
Wenn Sie diese Annahme nicht treffen können, testen Sie zunächst mit MemberQ
EDIT : Dank an TomD, der die +1 in der zweiten Lösung vorschlug, wodurch die Notwendigkeit entfällt, die Append
.
Sie könnten etwas wie folgt versuchen:
f[list_, item_] := list[[1 ;; Position[list, item][[1, 1]]]]
Verwendung:
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}
*)
Wenn Sie auch Werte größer als 3 filtern wollen, können Sie einfach Ihren Code verwenden, der meinen umschließt:
g[list_, item_] := Select[list[[1 ;; Position[list, item][[1, 1]]]], # <= 3 &]
also:
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}
*)
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.