Betrachten Sie den folgenden Code ein:Kann man Listenverständnis-Derivate in seinen Methoden verwenden?
a = [... for i in input]
i = a.index(f(a))
Ich frage mich, ob ich in der Lage sein könnte, einen Einzeiler zu tun. Offensichtlicher Versuch ist:
i = [... for i in input].index(f([... for i in input]))
Aber diese Lösung erfordert Liste zweimal generiert werden. nicht so offensichtliche Versuch ist:
i = [ a.index(f(a)) for a in [[... for i in input],] ]
Welche der Trick funktioniert, aber macht Code wirklich seltsam.
Dies führt mich zu der Idee, dass es wahrscheinlich die Möglichkeit gibt, die Liste zu verwenden, die durch das Listenverständnis erzeugt wird, in ihrer eigenen Methodenaufruf. Etwas wie (beide funktionieren nicht, offensichtlich):
i = [... for i in input].index(f(_))
# or
i = [... for i in input].index(f(self))
Kann es getan werden?
Warum möchten Sie die Lesbarkeit ausschalten? :) –
Was macht f()? Möchten Sie einfach den Index eines bestimmten Listenelements erhalten? – ODiogoSilva
Sie könnten ein Lambda erstellen und es sofort mit Ihrem Verständnis aufrufen: 'i = (Lambda x: x.index (f (x)) ([... für i in Eingabe])' Aber das ist Häresie. Auch, don Benennen Sie eine iterierbare Eingabe, die die eingebaute Eingabefunktion maskiert – Shashank