Konvertiere eine Liste von Zahlen in Bereiche

8

Ich habe eine Reihe von Zahlen, sagen Sie Folgendes:

%Vor%

Die dort dargestellten Informationen könnten in Python als Bereiche dargestellt werden:

%Vor%

In meiner Ausgabe würde ich 1..4, 6..8, 20..32..4 schreiben, aber das ist nur eine Frage der Präsentation.

Eine andere Antwort zeigt, wie man dies für zusammenhängende Bereiche tun kann. Ich sehe nicht, wie ich das für schrittige Bereiche wie oben leicht machen kann. Gibt es dafür einen ähnlichen Trick?

    
Martin Ueding 04.05.2017, 16:17
quelle

4 Antworten

3
___ qstnhdr ___ Konvertiere eine Liste von Zahlen in Bereiche ___ answer43789947 ___
%Vor%

Test:

%Vor%     
___ answer43789444 ___

Sie können %code% und %code% von %code% Modul zusammen mit %code% von %code% modul verwenden, wie in diesem Beispiel:

Update: Sehen Sie sich die Kommentare an, um die Logik hinter dieser Lösung und ihren Einschränkungen zu verstehen.

%Vor%

Ausgabe:

%Vor%

Einschränkungen:

Mit dieser Art von Eingabe:

%Vor%

Wird ausgegeben:

%Vor%

Fühlen Sie sich frei, diese Lösung zu verwenden und sie zu übernehmen oder zu modifizieren, um Ihre Bedürfnisse zu erfüllen.

    
___ qstntxt ___

Ich habe eine Reihe von Zahlen, sagen Sie Folgendes:

%Vor%

Die dort dargestellten Informationen könnten in Python als Bereiche dargestellt werden:

%Vor%

In meiner Ausgabe würde ich %code% schreiben, aber das ist nur eine Frage der Präsentation.

Eine andere Antwort zeigt, wie man dies für zusammenhängende Bereiche tun kann. Ich sehe nicht, wie ich das für schrittige Bereiche wie oben leicht machen kann. Gibt es dafür einen ähnlichen Trick?

    
___ antwort43788396 ___

Hier ist ein direkter Ansatz für das Problem.

%Vor%     
___ antwort43788409 ___

Es ist vielleicht nicht sehr kurz oder elegant, aber es scheint zu funktionieren:

%Vor%

Dies iteriert über einen Iterator der Liste und liefert Bereichsobjekte:

%Vor%

Es behandelt auch negative Bereiche und Bereiche, die nur ein Element haben:

%Vor%     
___ tag123python ___ Python ist eine dynamische und stark typisierte Programmiersprache, die die Usability betont. Zwei ähnliche, aber größtenteils inkompatible Versionen von Python sind weit verbreitet (2 und 3). Wenn Sie eine versionsspezifische Python-Frage haben, sollten Sie die Tags [python-2.7] oder [python-3.x] zusätzlich zum Tag [python] verwenden. Wenn Sie eine Python-Variante wie jython, pypy, iron-python usw. verwenden, kennzeichnen Sie diese bitte entsprechend. ___
Jared Goguen 04.05.2017, 16:33
quelle
1
%Vor%

Test:

%Vor%     
9000 04.05.2017 18:07
quelle
1

Sie können groupby und count von itertools Modul zusammen mit Counter von collections modul verwenden, wie in diesem Beispiel:

Update: Sehen Sie sich die Kommentare an, um die Logik hinter dieser Lösung und ihren Einschränkungen zu verstehen.

%Vor%

Ausgabe:

%Vor%

Einschränkungen:

Mit dieser Art von Eingabe:

%Vor%

Wird ausgegeben:

%Vor%

Fühlen Sie sich frei, diese Lösung zu verwenden und sie zu übernehmen oder zu modifizieren, um Ihre Bedürfnisse zu erfüllen.

    
Chiheb Nexus 04.05.2017 17:38
quelle
0
___ qstnhdr ___ Konvertiere eine Liste von Zahlen in Bereiche ___ answer43789947 ___
%Vor%

Test:

%Vor%     
___ answer43789444 ___

Sie können %code% und %code% von %code% Modul zusammen mit %code% von %code% modul verwenden, wie in diesem Beispiel:

Update: Sehen Sie sich die Kommentare an, um die Logik hinter dieser Lösung und ihren Einschränkungen zu verstehen.

%Vor%

Ausgabe:

%Vor%

Einschränkungen:

Mit dieser Art von Eingabe:

%Vor%

Wird ausgegeben:

%Vor%

Fühlen Sie sich frei, diese Lösung zu verwenden und sie zu übernehmen oder zu modifizieren, um Ihre Bedürfnisse zu erfüllen.

    
___ qstntxt ___

Ich habe eine Reihe von Zahlen, sagen Sie Folgendes:

%Vor%

Die dort dargestellten Informationen könnten in Python als Bereiche dargestellt werden:

%Vor%

In meiner Ausgabe würde ich %code% schreiben, aber das ist nur eine Frage der Präsentation.

Eine andere Antwort zeigt, wie man dies für zusammenhängende Bereiche tun kann. Ich sehe nicht, wie ich das für schrittige Bereiche wie oben leicht machen kann. Gibt es dafür einen ähnlichen Trick?

    
___ antwort43788396 ___

Hier ist ein direkter Ansatz für das Problem.

%Vor%     
___ antwort43788409 ___

Es ist vielleicht nicht sehr kurz oder elegant, aber es scheint zu funktionieren:

%Vor%

Dies iteriert über einen Iterator der Liste und liefert Bereichsobjekte:

%Vor%

Es behandelt auch negative Bereiche und Bereiche, die nur ein Element haben:

%Vor%     
___ tag123python ___ Python ist eine dynamische und stark typisierte Programmiersprache, die die Usability betont. Zwei ähnliche, aber größtenteils inkompatible Versionen von Python sind weit verbreitet (2 und 3). Wenn Sie eine versionsspezifische Python-Frage haben, sollten Sie die Tags [python-2.7] oder [python-3.x] zusätzlich zum Tag [python] verwenden. Wenn Sie eine Python-Variante wie jython, pypy, iron-python usw. verwenden, kennzeichnen Sie diese bitte entsprechend. ___
L3viathan 04.05.2017 16:34
quelle

Tags und Links