Ich habe einen in Python geschriebenen Code überprüft. Ein Teil davon sieht so aus.

n = len(A)
T = n * [False]
for i in xrange(n + 1):
    T[A[i]] = True

Welches A ist ein Array von ganzzahligen Werten. Ich gehe davon aus, dass die zweite Zeile eine Liste der Größe n mit den Werten false erstellt, aber mir ist nicht klar, wie T [A [i]] funktioniert. Greift es bei A [i] auf das Element von T zu? Aber A [i] liegt nicht unbedingt zwischen 0 und n.

2
Farid A 29 Nov. 2013 im 13:43

3 Antworten

Beste Antwort

Es greift tatsächlich auf das Element von T bei A[i] zu. Und es ist in der Tat wahr, dass A[i] möglicherweise nicht zwischen 0 und n liegt. Aber genau das macht der Code.

Wenn Sie also erwarten, dass T[A[i]] funktioniert, gibt es wahrscheinlich vorher Code, der sicherstellt, dass A[i] immer zwischen 0 und n liegt.

2
justhalf 29 Nov. 2013 im 09:45

A[i] ist wahrscheinlich eine Zahl, und ja, wenn ihre Länge >n ist, erhalten Sie einen IndexError.

Die tatsächlich übergebene Variable ist ungefähr so:

T[number]

Hier ist ein kleines Beispiel, wir haben die Variable A:

>>> A = [4, 3, 2, 1, 0]

Und wir haben die Variable T als:

>>> T = ['A', 'B', 'C', 'D', 'E']

Und dann machen wir die Schleife:

>>> for i in range(5):
    print T[A[i]]

Ergebnis:

E
D
C
B
A

Solange A[i] nicht höher als n ist, ist es in Ordnung. Hoffe das hilft!

1
aIKid 29 Nov. 2013 im 09:45

Siehe farid,

Sie sind verwirrt über T [A [i]]. Lass mich dir erklären ...

A und T sind beide Arrays.

Für T [A [i]] = True ist A [i] ein Index für das Array T.

Weil die Länge von T nur n ist. SO, wenn Array A alle ganzzahligen Werte

Aber wenn nicht: Python wird durch Index außerhalb des Bereichs Ausnahme

0
Aks 29 Nov. 2013 im 09:59