Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapa Fungsi `range()` Python Mengecualikan Bound Atas?

Mengapa Fungsi `range()` Python Mengecualikan Bound Atas?

Susan Sarandon
Susan Sarandonasal
2024-12-13 17:15:09904semak imbas

Why Does Python's `range()` Function Exclude the Upper Bound?

Mengapa Fungsi Julat Mengecualikan Sempadan Atas

Dalam Python, fungsi julat(mula, tamat) menjana jujukan nombor bermula dari mula dan berakhir sebelum tamat. Tingkah laku ini boleh mengelirukan bagi sesetengah pengguna yang menjangkakan julat akan disertakan akhir.

Sebab untuk pengecualian ini terletak pada penggunaan biasa julat(0, 10). Apabila digunakan dengan permulaan 0, julat mengembalikan [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], iaitu urutan yang dikehendaki dengan 10 elemen. Ini sepadan dengan panjang jujukan yang dijana, memastikan bahawa bilangan lelaran adalah betul dalam gelung dan aplikasi lain.

Selain itu, mengecualikan sempadan atas membolehkan sintaks gelung yang lebih bersih. Pertimbangkan coretan kod:

for i in range(len(li)):
    pass

Jika julat disertakan tamat, kod di atas akan menimbulkan ralat apabila saya mencapai len(li) kerana ia akan cuba mengakses elemen di luar sempadan senarai. Mengecualikan sempadan atas menghapuskan kemungkinan ralat ini.

Pengaturcara biasanya lebih suka menggunakan untuk gelung dengan i antara 0 hingga len(li) - 1 daripada 1 hingga len(li). Ini disebabkan oleh kelaziman pengindeksan berasaskan 0 dalam pengaturcaraan.

Untuk pengguna yang memilih untuk menyertakan sempadan atas, fungsi tersuai boleh dibuat:

def range1(start, end):
    return range(start, end + 1)

Menggunakan julat1(1 , 10) akan menghasilkan urutan yang dikehendaki bagi [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].

Atas ialah kandungan terperinci Mengapa Fungsi `range()` Python Mengecualikan Bound Atas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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