2016-06-02 4 views
0

Wie der Titel sagt, würde ich gerne wissen, wie man "Listenverständnis" verwendet, um diese for-Schleife zu verkürzen. Die Schleife ist funktional; Die Details der mir gegebenen Aufgabe geben jedoch an, dass ich mindestens ein Listenverständnis haben sollte, und dies war die einzige for-Schleife in meinem Code. Übrigens, ich bin ziemlich neu bei Python.Python: Wie würde man diese spezielle for-Schleife mit Listenverständnis darstellen?

z=0 
for elements in a 
    if a[z] in c: 
     z=z+1 
    elif a[z] in b: 
     c.append(a[z]) 
     z=z+1 
    else: 
     z=z+1 

Auch, wenn es irgendwelche allgemeinen Tipps gibt, diese zu verkürzen, würde das sehr geschätzt werden.

+0

Ihre 'for' Schleife keinen Sinn macht. – Fabricator

+0

Was passiert mit deinem 'Pass'? – Will

+0

@ nu11p01n73R Die einzigen for-Schleifen, die ich gemacht habe, waren das Anwenden einer Funktion auf ein Set. Also habe ich versucht zu schreiben (Elemente für Elemente in einem wenn a [z] in c ...); Allerdings habe ich nicht verstanden, wie man die Befehle "pass" oder "z = z + 1" in das Listenverständnis hinter meiner if-Anweisung übergibt. – Noaline

Antwort

1

Ich nehme an, was Sie wollen, ist Elemente aus a nehmen und sie in c platzieren, wenn diese Elemente in b vorhanden sind. Außerdem möchten Sie sicherstellen, dass nur ein solches Element in c existiert, dh c ist ein Satz.

Sie können tun, als

>>> a = [1, 3, 5, 7, 3] 
>>> b = [3, 5] 
>>> set([ i for i in a if i in b ]) 
set([3, 5]) 
+0

Also, schneiden Sie die z-Variable und verwenden Sie set(). Cool, danke. Würdest du wissen, wie du mögliche Duplikate loswerden kannst? – Noaline

+0

Das 'set()' wird alle Duplikate entfernen. Experimentieren Sie ein wenig mit dem Listenverständnis. Versuchen Sie, den 'set' – nu11p01n73R

+0

Cool zu entfernen. Es sieht so viel besser aus. Vielen Dank. Und ich werde mein Bestes geben, um zu experimentieren. :) – Noaline