2011-08-28 11 views
13

Właśnie dostałem jakąś dziwną moc skrypt Pythona:Co [...] oznacza (wielokropka) na liście w Pythonie?

[[(7, 6), (6, 4), (7, 2)], [...], [...], [...], [(7, 6), (8, 4), (7, 2)], [...], [...], [...], [...], [...], [...], [...]] 

Wyjście powinno być lista list krotki. Ale nie mam pojęcia, dlaczego [...] się pojawia.

Co oznacza [...]?

Nie sądzę, że jest to pusta lista, jako pusta lista []. Czy to może być duplikaty?

+2

Jaki jest kod? –

+0

To może pomóc - http://stackoverflow.com/questions/118370/how-do-you-use-the-ellipsis-slicing-syntax-in-python – arunkumar

+0

@arunkumar: 'repr' of' Ellipsis' is ' "Ellipsis" '. –

Odpowiedz

25

Jest to odwołanie rekurencyjne. Twoja lista zawiera się, a przynajmniej jest jakiś cykl.

Przykład:

x = [] 
x.insert(0, x) 
# now the repr(x) is '[[...]]'. 

Wbudowany repr dla list wykrywa tę sytuację i nie próbuje rekursja na podmenu (jak zazwyczaj), bo to doprowadziłoby do nieskończonej rekurencji.

Zauważ, że ... niekoniecznie ci, których wykaz jest mowa:

y, z = [], [] 
x = [y, z] 
y.insert(0, z) 
z.insert(0, y) 
# looks the same as it would if y contained y and z contained z. 

tak repr naprawdę nie jest kompletna formatu serializacji na listach.

Co do tego, dlaczego je otrzymujesz: nie jesteśmy medium i nie możemy naprawić problemu z kodem, chyba że widzimy kod.