Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimanakah Saya Boleh Mengulangi Melalui Senarai dalam Python Menggunakan Pengumpulan Berpasangan atau N-Tuple?

Bagaimanakah Saya Boleh Mengulangi Melalui Senarai dalam Python Menggunakan Pengumpulan Berpasangan atau N-Tuple?

Barbara Streisand
Lepaskan: 2024-12-09 10:58:12
asal
713 orang telah melayarinya

How Can I Iterate Through a List in Python Using Pairwise or N-Tuple Grouping?

Melakukan Lelaran Berpasangan dalam Senarai

Masalah:

Dalam senarai yang diberikan, ulang semula elemen secara berpasangan untuk melaksanakan sesuatu yang spesifik operasi.

Pelaksanaan:

Pendekatan Pythonic untuk lelaran berpasangan ialah menggunakan fungsi berpasangan() atau berkumpulan():

def pairwise(iterable):
    "s -> (s0, s1), (s2, s3), (s4, s5), ..."
    a = iter(iterable)
    return zip(a, a)

l = [1,2,3,4,5,6]
for x, y in pairwise(l):
    print("{} + {} = {}".format(x, y, x + y))
Salin selepas log masuk

Fungsi ini mengezipkan lelaran dengan dirinya sendiri, menghasilkan pasangan elemen.

Pengumpulan Umum:

Untuk mengumpulkan elemen dalam n-tuple, gunakan fungsi grouped():

def grouped(iterable, n):
    "s -> (s0,s1,s2,...sn-1), (sn,sn+1,sn+2,...s2n-1), (s2n,s2n+1,s2n+2,...s3n-1), ..."
    return zip(*[iter(iterable)]*n)
Salin selepas log masuk

Sebagai contoh, untuk mengulang tiga kali ganda daripada senarai l di atas:

for x, y, z in grouped(l, 3):
    print("{} + {} + {} = {}".format(x, y, z, x + y + z))
Salin selepas log masuk

Taip Semakan dengan Mypy:

Untuk menyemak jenis dalam Python 3 dengan Mypy:

from typing import Iterable, Tuple, TypeVar

T = TypeVar("T")

def grouped(iterable: Iterable[T], n=2) -> Iterable[Tuple[T, ...]]:
    "s -> (s0,s1,s2,...sn-1), (sn,sn+1,sn+2,...s2n-1), ..."
    return zip(*[iter(iterable)] * n)
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengulangi Melalui Senarai dalam Python Menggunakan Pengumpulan Berpasangan atau N-Tuple?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan