2017-04-17 14 views
-2

Wenn ich ein Array von Zahlen wie diesem habe, brauche ich es, um "1" zu drucken, weil es das früheste übereinstimmende Zeichen ist jede Saite miteinanderVergleichen einer Liste von Zeichenfolgen mit sich selbst und Ermitteln einer Liste der ersten übereinstimmenden Zeichen zwischen ihnen (Python)

Numbers = ["590", "390", "160", "170", "170"] 

vergleicht diesen Code Laufen I unten gibt mir die Nummer „2“, weil sie die ersten passenden Zeichen geschrieben. Das ist das weiteste, was ich habe und was ich jetzt tun soll.

import itertools 
import math 

qw = "5234" 
qe = "4211" 
match = list(set(qw.lower()) & set(qe.lower())) 
minPoint = match.index(min(match)) 
match[minPoint] 
+1

Einfügen eigentlichen Code verwenden Sie getestet haben das Problem, das Sie beschreiben, zu reproduzieren. Ganzzahlen haben keine '.lower()' Methode. Lesen Sie https://stackoverflow.com/help/how-to-ask und https://stackoverflow.com/help/mcve. –

+0

Sein Code Ich habe geschrieben, mit einigen Bibliotheken, aktualisiert –

+0

Bearbeiten Sie Ihre Frage und den Code dort, nicht in den Kommentaren. –

Antwort

0

Ihre set Idee geht in die richtige Richtung, aber Sie wollen wahrscheinlich zu zip zuerst, weil diese Gruppen die Ziffern, die Sie zusammen vergleichen möchten. Der bequemste Weg ist dann die collections.Counter Klasse

import collections 

for j, row in enumerate(zip(*Numbers)): 
    counts = collections.Counter(row) 
    best = counts.most_common(1)[0] 
    if best[1] > 1: 
     print("Found {} occurrences of {} in position {}".format(best[1], best[0], j)) 
     break 
else: 
    print('No repeats found') 
Verwandte Themen