2016-05-06 4 views
3

Ich bin neu in Python. Ich versuche, die erste Nummer in einer Liste von Zeichenfolgen zu erhalten, die Zahlen in einer Reihe sind, die mit einer gemeinsamen Nummer beginnen.Finden Sie das erste Vorkommen von Elementen in einer Liste von Zeichenfolgen, basierend auf dem ersten Zeichen in der Zeichenfolge

ex:

x = ['512','345','321','345','674','132','231','145','214','576'] 

meine erwartete Ausgabe:

result = ['512','345','674','132','231'] 

das heißt zum Beispiel sagen, in allen Nummern mit 1 in der Liste beginnen, sollte ich die erste Nummer ebenfalls für alle anderen Zahlen bekommen.

Ich könnte for Schleife zweimal verwenden, um es zu bekommen. aber ich möchte wissen, gibt es einen besseren Weg, es zu tun.

HINWEIS: Die Liste ist eine Liste von Zeichenfolgen, die Zahlen sind, war nur ein Beispiel.

+0

Können Sie erklären, warum Ihre erwartete Ausgabe ist, was Sie erwarten? Ich verstehe nicht, welchen Algorithmus Sie erstellen möchten. Zu zeigen, welcher Code Sie bisher haben und ob er funktioniert oder nicht (und wenn nicht, wie es scheitert) wäre ebenfalls hilfreich. – dcrosta

+0

Ihr Englisch ist hier wenig arm, nicht genau, was Sie wollen. –

+0

Ich versuche, die 1. Nummer jeder Unterliste zu drucken. sagen Sie zum Beispiel, die Liste enthält Zahlen zwischen 1 bis 1000 alle Zahlen kleiner als 100 ist eine Unterliste und Zahlen kleiner als 200 ist eine Unterliste. Ich könnte Liste in Unterlisten aufteilen und dies tun. aber ich möchte es nur mit einer Liste machen. – newbie

Antwort

4

Sie können dazu eine Generatorfunktion verwenden. In der Funktion iterieren Sie einfach Ihre Anfangsliste und prüfen für jedes Element, ob ein anderes Element, das mit dem gleichen Zeichen beginnt, bereits in einer set Zeichenfolge existiert. Wenn keine Übereinstimmung gefunden wird, nur yield dieses Element.

>>> def get_num(lst): 
...  found = set() 
...  for element in lst: 
...   if not any(item.startswith(element[0]) for item in found): 
...    found.add(element) 
...    yield element 
... 
>>> x = ['512','345','321','345','674','132','231','145','214','576'] 
>>> list(get_num(x)) 
['512', '345', '674', '132', '231'] 
+0

Arbeitete perfekt (Y) – newbie

Verwandte Themen