2011-12-12 16 views
5

Próbuję ulepszyć swoją dokumentację. Chcę powiedzieć, że ta funkcja akceptuje coś, co jest kolekcją. Jest ono dostępne, ale kod wielokrotnie będzie iterować po iteracji. "Lista" jest zbyt szczegółowa, a "iterowalna" nie działa, ponieważ niektóre iteracje mogą być powtarzane tylko raz.Python to nazwa iteracji, która może być wielokrotnie powtarzana.

Czy jest coś na rzeczy? "Re-iterable"? Wielokrotne iterable?

+0

Ładne pytanie .. –

+2

Brak odpowiedzi na twoje pytanie, ale proponuję, abyś użył itertools.tee w swoim kodzie - aby mógł zaakceptować każdą iterację. – jsbueno

+0

@jsbueno: Jednakże wprowadziłoby to redundantną kopię podczas przekazywania w sekwencji. –

Odpowiedz

2

Nie mogę wymyślić niczego odpowiedniego. Reiterable brzmi jak fajny termin, dlaczego nie zdefiniować go wyraźnie w dokumentacji, a potem go użyć?

5

Prawdopodobnie potrzebujesz terminu "sequence". Sekwencja w języku Python to coś, co ma długość i umożliwia dostęp do elementu przez indeks.

+1

To może być zbyt szczegółowe, chociaż - na przykład połączona lista nie obsługuje dostępu według indeksu, ale wciąż jest powtarzalna. –

+1

@SideshowBob: Nie sądzę, że w praktyce jest to zbyt restrykcyjne. Jedyną dołączoną listą implementacji dostarczaną z Pythonem jest połączona lista "deque", która jest również sekwencją. Oczywiście dostęp przez indeks jest O (n) dla 'deque'. –

+2

@SvenMarnach: ValuesView jest "powtarzalny", ale ogólnie nie obsługuje dostępu według indeksu. –

Powiązane problemy