Nie wiem, jak rozejrzeć się za to, ale od itertools
funkcja izip_longest robi to:izip_longest z pętli zamiast fillvalue
izip_longest('ABCD', 'xy', fillvalue='-')
->Ax By C- D-
Miałem nadzieję iterable biblioteka miałaby coś do to zrobić:
izip_longest_better('ABCDE', 'xy')
->Ax By Cx Dy Ex
Korzystnie dla dowolnej liczby iterables, będąc używane do generowania milionów kombinacji. Napiszę własną, ale pomyślałem, że zapytam, ponieważ jestem pewien, że moja własna nie będzie bardzo pytoniczna.
Awesome, To był cykl, którego nie próbowałem. Byłem też w stanie uzyskać coś działającego przez zagnieżdżanie dla pętli na tablicach zamiast iteratorów, ale jest to znacznie lepsze. Co ja w końcu wykorzystane zostało to obsłużyć podobny do iZIP”
EDIT: skończyło się
def izip_longest_repeat(*args): if args: lists = sorted(args, key=len, reverse=True) result = list(itertools.izip(*([lists[0]] + [itertools.cycle(l) for l in lists[1:]]))) else: result = [()] return result
Awesome, To był cykl, którego nie próbowałem. Byłem też w stanie uzyskać coś działającego przez zagnieżdżanie dla pętli na tablicach zamiast iteratorów, ale jest to znacznie lepsze. To, co w końcu wykorzystałem, było podobne do obsługi izip. 'list = posortowane (args, klucz = len, reverse = True)' 'result = list (itertools.izip (* ([lists [0]] + [itertools.cycle (l) dla l na listach [ 1:]]))) ' – adzuci
bardzo ważne przy generowaniu słownika z listy, która ma nagłówki w pierwszych elementach! – SIslam