welche Nummern in Liste 2 sind größer und kleiner als jede Nummer in Liste 1

8

Ich benutze Python. Ich habe zwei Listen, Liste 1 ist 7000 ganze Zahlen lang, Liste 2 ist 25000 ganze Zahlen. Ich möchte jede Nummer in Liste 1 durchgehen und die nächsthöhere Nummer in Liste 2 finden, die größer und die nächstkleinere Nummer als jede Nummer in Liste 1 ist, und dann den Unterschied zwischen diesen beiden Nummern in Liste 2 berechnen. Bisher Ich habe:

%Vor%

Das scheint nicht zu funktionieren. Ich möchte die expliziten Zahlen in Liste 2 finden, die weniger als eine bestimmte Nummer in Liste 1 sind und das Maximum kennen, und dann die kleinste Nummer in Liste 2 herausfinden, die größer als die Nummer in Liste 1 ist. Hat jemand irgendwelche Ideen? ? Danke

    
user2428358 28.05.2013, 12:01
quelle

4 Antworten

6

Hier ist eine vektorisierte Lösung mit NumPy. Es sollte extrem schnell sein, da es in Python keine Schleifen gibt (abgesehen von der Druckstufe am Ende).

%Vor%

Hier ist die Ausgabe mit den fest codierten Testdaten wie oben:

%Vor%     
John Zwinck 28.05.2013 12:26
quelle
6

Sie können das bisect -Modul verwenden, worst case complexity O(N * logN) :

%Vor%

Ausgabe:

%Vor%

Obwohl dies nichts für 4 und 101 ausgeben wird, ist 4 kleiner als jedes Element in lis2 und 101 ist größer als jedes Element in lis2. Aber das kann bei Bedarf behoben werden.

    
Ashwini Chaudhary 28.05.2013 12:14
quelle
3

Zunächst einmal ist Ihr Beispiel kein gültiger Code, oder er tut zumindest nicht, was er tun soll. Wenn Sie

haben %Vor%

dann ist ich nicht der Index, sondern ein Element von list1. Also zuerst würden Sie i und j vergleichen, nicht Liste [i] und Liste [j].

Es sollte einfacher sein, List Comprehensions & gt;

zu verwenden %Vor%

Sie müssen möglicherweise ein if oder zwei hinzufügen, um sicherzustellen, dass a und b existieren, aber es sollte so funktionieren.

    
Harpe 28.05.2013 12:11
quelle
0

Hier ist eine Lösung, die keine numpy, bisect Modul oder Listenkomprehensionen verwendet! Viel Spaß mit

%Vor%     
Vorsprung 28.05.2013 12:55
quelle

Tags und Links