2017-09-10 1 views
-1

dieses Stück Code funktioniert nicht, und ich bekomme den "IndexError: Liste Index außerhalb des Bereichs" Fehler, aber nicht sicher, warum, jemand weiß, warum dies nicht tut Arbeit? Vielen Dank.Wer weiß, warum das nicht funktioniert? -> [cp_props [x]] [1]

print([cp_props[x]][1]) 

Es sollte den Namen eines Elements in einer Liste, die die Namen von anothert Liste ist und dann das zweite Element in dieser Liste öffnen ???

Okay, so dass es funktioniert nun wie folgt aus:

globals()[cp_props[x]][1] 

Aber gibt es eine andere einfache Art und Weise, es zu tun? Vielen Dank.

+0

Da Arrays in jeder vernünftigen Sprache bei 0 beginnen. Es macht die Mathe * Weise * einfacher. – o11c

+1

'[cp_props [x]]' und 'globals() [cp_props [x]]' hat zwei sehr unterschiedliche Bedeutungen. Der erste erstellt eine Liste, der zweite indexiert das globale Wörterbuch. –

+0

oh ich sehe, danke @JeffMercado – Jamie

Antwort

1

[cp_props[x]] ist eine Ein-Element-Liste. Sein einziges Element ist cp_props[x], was auch immer es ist. Dies ist die Elementnummer 0. Es gibt keine Elementnummer 1, deshalb schlägt der Selektionsausdruck [1] fehl.

Ausdruck globals()[cp_props[x]][1] hat eine ganz andere Bedeutung. Lesen von links nach rechts:

  1. globals() ist eine Liste globaler Variablen.
  2. globals()[cp_props[x]] ist eine Auswahl aus dieser Liste - das heißt, einige globale Variable.
  3. globals()[cp_props[x]][1] ist das zweite Element von , dass globale Variable.
+0

ich würde es in eine Druckfunktion setzen, also, print ([cp_props [x]] [1]), ist das immer noch ein Problem? Sollte ich gebogene Klammern verwenden? – Jamie

+0

Oh, vielen Dank, das erklärt es, danke, also ist das ok wie es dann bei globals() ist? – Jamie

+0

Sie sollten sich in Python über die Verwendung von Klammern informieren. – DyZ

Verwandte Themen