2015-09-28 22 views
5

Mam listę list:Indeks listy wewnętrznej na liście list

>>> a = [list() for i in range(0, 5)] 
>>> a 
[[], [], [], [], []] 

przechowywać adres jednego z wewnętrznych list w zmiennej:

>>> c = a[4] 

I teraz Spodziewam się, aby móc pobierać indeks C (= 4) w ten sposób, ale to nie działa:

>>> a.index(c) 
0 

powyższe prace, gdy lista zawiera stałe, ale nie działa powyżej. czego mi brakuje?

+0

'a [4]' nie jest adresem wewnętrznej listy lecz wartością. – karakfa

Odpowiedz

4

Problem polega na tym, że list.index() działa również w oparciu o równość, a nie tożsamość, dlatego zwraca indeks pierwszego równego elementu na liście.

A dla list równość jest sprawdzana przez pierwsze sprawdzenie, czy są one dokładnie tą samą listą (tj. Jeśli obie listy są porównywane są tymi samymi obiektami listy, natychmiast zwraca True) w przeciwnym razie opiera się na równości wszystkich elementów, które zawiera , to znaczy jeśli dwie listy mają wszystkie elementy w tej samej kolejności, to te listy są równe, dlatego puste listy są zawsze równe. Przykład -

>>> a = [] 
>>> b = [] 
>>> a == b 
True 
>>> a is b 
False 
Powiązane problemy