In Ihrem Beispiel sind p1, p2, p3
Identifikatoren, aber in Ihrem for
-loop, fügen Sie die Namen dieser Bezeichner als Strings auf Ihrer Liste. Folglich erhalten Sie eine Liste von Zeichenfolgen und keine Liste der dereferenzierten Werte für Bezeichner, die diesen Zeichenfolgen entsprechen. Dieses Verhalten ist beabsichtigt und erwünscht.
Bezeichner sind benannte Bezeichner, die Sie in Ihrem Code verwenden, um auf die Werte zuzugreifen, auf die sie verweisen. Im Allgemeinen konvertiert keine Programmiersprache Zeichenfolgen, die mit einigen lokalen Bezeichnern übereinstimmen, automatisch in tatsächliche Bezüge, da dies in den meisten Fällen ein unbeabsichtigtes Verhalten ist. Denken Sie an Umfang und Sicherheit.
Normalerweise sollten Sie nicht versuchen, Zeichenfolgen in Bezeichner umzuwandeln. In Python können Sie dazu getattr
verwenden. Allerdings werde ich dies hier nicht skizzieren, denn wieder sollten Sie nicht tun.
Der bessere Ansatz für Ihren Fall direkt auf Ihre Punkte in einem list
oder dict
Struktur instanziiert:
# List:
plist = [(20, 50), (70, 80), (100, 140)]
# Dict:
pdict = {
'p1': (20, 50),
'p2': (70, 80),
'p3': (100, 140)
}
In diesen Fällen Sie Ihre Punkte wie so zugreifen können:
# For list case:
for i in range(3):
print(plist[i])
# For dict case:
for i in range(3):
print(pdict['p{:d}'.format(i)])
Warum man sie als Liste nicht definieren? – TigerhawkT3
* manuell funktioniert es * - wie Sie geschrieben haben, kann manuelle Aktion eine Lösung werden. Zeigen Sie, wie der endgültige Listeninhalt aussehen sollte – RomanPerekhrest