Wie werden mehrere Listen nacheinander mit einer Schleife durchlaufen? [Duplikat]

8

In Python 3.6.3 Gibt es eine Möglichkeit, eine Liste nach der anderen zu durchlaufen?

Zum Beispiel:

%Vor%

(In diesem Fall möchte ich die Bildkarten direkt nach den Nicht-Bildkarten durchlaufen.)

Zur Klarstellung: Die obige Zeile wirft ein:

%Vor%

Das ist mein Problem.

    
Josh 26.11.2017, 19:01
quelle

5 Antworten

17

range gibt in Python3 kein list zurück range(2, 10) + ["J", "Q", "K", "A"] funktioniert nicht, list(range(2, 10)) + ["J", "Q", "K", "A"] jedoch. Sie können auch itertools.chain verwenden, um Iterables zu verketten:

%Vor%

Das verschachtelte Verständnis stellt natürlich ein kartesisches Produkt dar, für das Sie auch ein Util verwenden können:

%Vor%     
schwobaseggl 26.11.2017, 19:07
quelle
8

Das Problem mit Ihrem aktuellen Code ist hier:

%Vor%

Zunächst sollte es range(2, 11) sein, sonst werden Karten mit der Nummer 10 weggelassen. Zweitens, um dem Bereich und der Liste beizutreten, müssen Sie Folgendes tun:

%Vor%

Also wird das Endergebnis sein:

%Vor%

Ich denke, das wird Ihnen die gewünschte Ausgabe geben (zuerst alle Nicht-Bildkarten, dann alle Bildkarten).

    
stybl 26.11.2017 19:04
quelle
5

Siehe @schwobaseggls Lösung für das, was Sie wollen, aber ich bevorzuge es, Karten als 2-stellige Zeichenfolge darzustellen:

%Vor%

Das ist meiner Meinung nach besser lesbar und wird sich immer noch wie ein Tupel von Rang, Anzug verhalten.

    
Imran 26.11.2017 19:17
quelle
3

In Python3 können Sie das Entpacken verwenden:

%Vor%     
Ajax1234 26.11.2017 19:14
quelle
2
___ answer47499911 ___

Das Problem mit Ihrem aktuellen Code ist hier:

%Vor%

Zunächst sollte es list(range(2, 11)) sein, sonst werden Karten mit der Nummer 10 weggelassen. Zweitens, um dem Bereich und der Liste beizutreten, müssen Sie Folgendes tun:

%Vor%

Also wird das Endergebnis sein:

%Vor%

Ich denke, das wird Ihnen die gewünschte Ausgabe geben (zuerst alle Nicht-Bildkarten, dann alle Bildkarten).

    
___ answer47499938 ___

list() gibt in Python3 kein range() zurück %code% funktioniert nicht, %code% jedoch. Sie können auch %code% verwenden, um Iterables zu verketten:

%Vor%

Das verschachtelte Verständnis stellt natürlich ein kartesisches Produkt dar, für das Sie auch ein Util verwenden können:

%Vor%     
___ answer47499993 ___

In Python3 können Sie das Entpacken verwenden:

%Vor%     
___ qstnhdr ___ Wie werden mehrere Listen nacheinander mit einer Schleife durchlaufen? [Duplikat] ___ 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. ___ answer4700140 ___

Fokussieren Sie nur in dem Fehler, den Sie bekommen:

  

TypeError: nicht unterstützte Operandentyp (en) für +: 'range' und 'list

Ich werde Ihnen eine Erklärung geben.

Ihr aktueller Code funktioniert in Python 2 :

%Vor%

wird gedruckt:

%Vor%

In Python 3 müssen Sie %code% :

verwenden %Vor%

wird gedruckt:

%Vor%

Sie müssen %code% verwenden, weil %code% in Python 3 erstellt einen unveränderlichen Sequenztyp , keine Liste.

    
___ tag123loops ___ Schleifen sind eine Art von Kontrollfluss-Struktur in der Programmierung, in der eine Reihe von Anweisungen wiederholt ausgeführt werden kann, bis eine Bedingung erfüllt ist. ___ tag123python3x ___ Python 3 ist die neueste Version der Python-Programmiersprache und wurde am 3. Dezember 2008 offiziell veröffentlicht. Verwenden Sie das allgemeinere [python] -Tag, wenn Ihre Frage nicht versionsspezifisch ist. ___ qstntxt ___

In Python 3.6.3 Gibt es eine Möglichkeit, eine Liste nach der anderen zu durchlaufen?

Zum Beispiel:

%Vor%

(In diesem Fall möchte ich die Bildkarten direkt nach den Nicht-Bildkarten durchlaufen.)

Zur Klarstellung: Die obige Zeile wirft ein:

%Vor%

Das ist mein Problem.

    
___ answer47500021 ___

Siehe @schwobaseggls Lösung für das, was Sie wollen, aber ich bevorzuge es, Karten als 2-stellige Zeichenfolge darzustellen:

%Vor%

Das ist meiner Meinung nach besser lesbar und wird sich immer noch wie ein Tupel von Rang, Anzug verhalten.

    
___
Elis Byberi 26.11.2017 19:30
quelle

Tags und Links