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
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% Sie können das bisect
-Modul verwenden, worst case complexity O(N * logN)
:
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.
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.