Search on blog:

Python: Pobieranie po trzy elementy z jednej listy za pomocą `zip()`

Pobieranie po trzy elementy z jednej listy

Python 3 wymaga użycia list() w pewnych momentach.

Za pomocą listy - nie dziala

a = [1,2,3,4,5,6,7,8,9]

print('A:', list(zip(a, a, a)) )

Za pomocą trzech iter (iterowania) - nie działa

it_1 = iter(a) 
it_2 = iter(a)
it_3 = iter(a)

print('B:', list(zip(it_1, it_2, it_3)) )

Za pomocą jednego iter (iterowania) - działa

it = iter(a)
print('C:', list(zip(it, it, it)) )

Za pomocą slice (wycinania) - działa

print('list:', a[::3])  # cala lista - co trzeci
print('list:', a[1::3]) # bez pierwszego - co trzeci
print('list:', a[2::3]) # bez dwoch pierwszych - co trzeci

print('wynik:', list(zip(a[::3], a[1::3], a[2::3])) )

Wynik

A: [(1, 1, 1), (2, 2, 2), (3, 3, 3), (4, 4, 4), (5, 5, 5), (6, 6, 6), (7, 7, 7), (8, 8, 8), (9, 9, 9)]

B: [(1, 1, 1), (2, 2, 2), (3, 3, 3), (4, 4, 4), (5, 5, 5), (6, 6, 6), (7, 7, 7), (8, 8, 8), (9, 9, 9)]

C: [(1, 2, 3), (4, 5, 6), (7, 8, 9)]

list: [1, 4, 7]
list: [2, 5, 8]
list: [3, 6, 9]
D: [(1, 2, 3), (4, 5, 6), (7, 8, 9)]
If you like it
Buy a Coffee