Ich habe ein Array:prüft ein modifiziertes Element eines Arrays ist Mitglied in dem gleichen Array
{ "abc" "def" "cba" "fed" "junk" }
Ich möchte in dem Array, wenn jedes Element zu prüfen, seine umgekehrte Version als Mitglied hat in der gleichen Array.
>>> array = ["abc", "def", "cba", "fed", "junk"]
>>> [item for item in array if item[::-1] in array] # [::-1] reverses a string
['abc', 'def', 'cba', 'fed']
Oder auch:
In Python, ich dies als ausdrücken würde
>>> list(filter(lambda x: x[::-1] in array, array))
['abc', 'def', 'cba', 'fed']
Ich habe versucht:
IN: scratchpad dup [ dup reverse swap member? ] filter
--- Data stack:
{ "abc" "def" "cba" "fed" "junk" }
{ }
Nein, nicht das Zitat für jeden Artikel .
Ich bin sicher, es gibt eine offensichtliche Antwort, oder ein Kombinator und ein Zitat, das dies effizient macht. Was ist es?
Aha! Vielen Dank! – cat
Also 'in?' Ist für 'set's und' member? 'Ist für' seq'uences. Ein '{array}' ist eine Sequenz, richtig? Gibt es also einen Grund, 'in?' Über 'member?'? – cat
'in?' Ist ein paar Zeichen kürzer als 'member?'. Für Sequenzen machen sie das Gleiche. Der Grund, warum es zwei Varianten gibt, ist wahrscheinlich Erbe. –