[mylist[2*n:2*n+2] for n in xrange(len(mylist)/2)]
Takie rozwiązanie umożliwia wykorzystanie listy listowe i krojenia do ekstrakcji pary, w ciągu od pierwotnej liście i utworzyć listę plastrów.
Alternatywnie, [mylist[n:n+2] for n in xrange(0, len(mylist), 2)]
, który jest taki sam, z wyjątkiem xrange
liczy się przez dwa zamiast plasterków. Podziękowania dla Stevena Rumbalskiego za sugestię.
A teraz coś z zupełnie innej beczki: tu jest rozwiązanie (ab) używając zip
i ulotne funkcja zamiast przypisania pośrednie:
>>> (lambda i: zip(i, i))(iter(mylist))
[(1, 2), (3, 4), (5, 6)]
Bardziej skomplikowane niż to konieczne - wystarczy przesunąć 'xrange' o 2 i większość matematyki zniknie. –
Sprzężenie zwrotne włączone. – wberry