2014-07-17 3 views
6

Ich mache ein Optimierungsproblem und schreibe eine gigantische Liste. Ich möchte Kommentare innerhalb der Liste wie unten einfügenPlatziere Kommentare innerhalb eines mehrzeiligen Listenliterals

my_rhs = [1.0, 1.0, 0.0, 0.0, 0.0,\ #comment1 
     -1.0, -1.0, -1.0,\ #comment2 
      0.0, 0.0, 0.0] 

aber wenn ich dies tun, gibt Python einen Fehler. Wie kann ich an den gezeigten Orten kommentieren? Ich habe versucht, jede Zeile als neue Liste zu definieren und + zum Anhängen zu verwenden, aber das scheint auch nicht zu funktionieren. Wie unten

my_rhs = [1.0, 1.0, 0.0, 0.0, 0.0]+\ #comment1 
     [-1.0, -1.0, -1.0]+\ #comment2 
     [0.0, 0.0, 0.0] 

Wie kann ich in den gezeigten Orten Kommentar ohne Python eine Fehlermeldung?

Antwort

9

Sie müssen einfach die Backslash-Zeichen entfernen:

my_rhs = [1.0, 1.0, 0.0, 0.0, 0.0, # comment1 
     -1.0, -1.0, -1.0, # comment2 
      0.0, 0.0, 0.0] 

Nachfolgend finden Sie eine Demonstration:

>>> my_rhs = [1.0, 1.0, 0.0, 0.0, 0.0, # comment1 
...   -1.0, -1.0, -1.0, # comment2 
...   0.0, 0.0, 0.0] 
>>> my_rhs 
[1.0, 1.0, 0.0, 0.0, 0.0, -1.0, -1.0, -1.0, 0.0, 0.0, 0.0] 
>>> 

Der \ Charakter sagt Python, dass die folgende Zeile Teil der aktuellen Zeile ist. Also, es dies interpretiert:

my_rhs = [1.0, 1.0, 0.0, 0.0, 0.0,\ #comment1 
     -1.0, -1.0, -1.0,\ #comment2 
      0.0, 0.0, 0.0] 

Wie entspricht dies sein:

my_rhs = [1.0, 1.0, 0.0, 0.0, 0.0, #comment1 -1.0, -1.0, -1.0, #comment2 0.0, 0.0, 0.0] 

Es ist bemerkenswert, dass PEP 8, die offiziellen Stil-Leitfaden für Python-Code, einen Abschnitt auf Einwickeln lang Zeilen:

Die bevorzugte Methode zum Umbrechen langer Zeilen ist die Verwendung von Pythons implizierter Zeile conti Nuation in Klammern, Klammern und Klammern. Lange Zeilen können durch Umbrechen von Ausdrücken in Klammern in mehrere Zeilen unterteilt werden. Diese sollten verwendet werden, um einen Backslash für die Zeilenfortsetzung zu verwenden.

Dieser Auszug aus Explicit Line Joining ist auch relevant:

Eine Zeile in einem Backslash keinen Kommentar tragen kann. Ein Backslash tut nicht weiter einen Kommentar. Ein umgekehrter Schrägstrich setzt ein Token außer für Zeichenfolgenliterale nicht fort (d. H. Andere Zeichen als Zeichenfolgenliterale können nicht sein, die über physische Zeilen mit einem umgekehrten Schrägstrich geteilt werden). Ein Backslash ist unzulässig woanders in einer Zeile außerhalb eines Zeichenfolgenliterals.

+0

dies ist eine tolle Antwort! .... Danke! .... Ich wünschte, ich könnte upvote, aber ich habe nicht einen "Ruf" hier zu haben. – mathopt

Verwandte Themen