perbedaan zip iterator dan daftar [duplikat]

Saya memiliki daftar bernama 'A' juga memiliki iterator bernama 'B', 'B' adalah iterator dari 'A'.

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

B = iter(A)

Output dari zip(A,A,A) adalah

[(0, 0, 0),
 (1, 1, 1),
 (2, 2, 2),
 (3, 3, 3),
 (4, 4, 4),
 (5, 5, 5),
 (6, 6, 6),
 (7, 7, 7),
 (8, 8, 8)]

Output dari zip(B, B, B) adalah

[(0, 1, 2), (3, 4, 5), (6, 7, 8)]

Apakah ada yang bisa menjelaskan perbedaannya


person Arun    schedule 19.12.2018    source sumber


Jawaban (1)


Itu mudah. Bagaimana cara zip bekerja? itu membuat iterator untuk setiap elemen yang di-zip dan melewatinya.

Saat Anda meneruskan zip(A,A,A), ini akan membuat 3 iterator, masing-masing akan dimulai dari A[0].

Ketika Anda melewati zip(B,B,B), Anda sudah memiliki iterator. Untuk membuat elemen pertama dari urutan yang dihasilkan, ia memanggil B.__iter__() 3 kali. Jadi Anda mendapatkan 0,1,2. Untuk elemen kedua dipanggil lagi B.__iter() 3 kali, sehingga mendapatkan 3,4,5 dan seterusnya.

person grapes    schedule 19.12.2018
comment
Sebenarnya, zip tidak membuat iterator untuk setiap elemen yang di-zip. - person DYZ; 19.12.2018