Prestasi Mengejutkan julat(n) dalam Python 3
Dalam Python 3, fungsi penjana julat dikenali dengan kelajuan yang luar biasa apabila menyemak keahlian bilangan besar dalam lingkungannya. Tingkah laku ini nampaknya berlawanan dengan intuitif memandangkan bilangan integer yang banyak yang nampaknya perlu diulang. Bagaimanakah objek julat mencapai kecekapan yang luar biasa ini?
Jujukan Pintar: Julat dalam Python 3
Bertentangan dengan jangkaan, objek julat dalam Python 3 tidak pra- menjana keseluruhan julat integernya. Sebaliknya, ia bertindak sebagai urutan pintar yang mengira nombor atas permintaan semasa lelaran. Ia hanya menyimpan titik permulaan, titik henti dan saiz langkah, membenarkannya mengira nilai individu atau subjulat mengikut keperluan.
Dioptimumkan mengandungi Kaedah
Objek julat juga melaksanakan kaedah mengandungi yang sangat dioptimumkan. Kaedah ini menilai sama ada nombor tertentu berada dalam julat tanpa mengimbas keseluruhan jujukan. Sebaliknya, ia melakukan pengiraan matematik yang melibatkan titik permulaan, titik henti dan saiz langkah. Pengiraan ini dilaksanakan dalam kod C yang dioptimumkan, menghasilkan kerumitan masa yang hampir malar.
Contoh Pelaksanaan Objek Julat Dipermudah
Untuk menggambarkan konsep, pertimbangkan yang dipermudahkan pelaksanaan objek julat kami sendiri:
class my_range: # ... other methods as described in the question and answer ... def __contains__(self, num): if self.step < 0: if not (self.stop < num <= self.start): return False else: if not (self.start <= num < self.stop): return False return (num - self.start) % self.step == 0
Contoh ini menunjukkan asas prinsip di sebalik kaedah cekap mengandungi objek julat. Ia mengira keahlian julat tanpa mengulangi keseluruhan julat.
Ringkasnya, objek julat dalam Python 3 ialah struktur data yang direka bentuk dengan teliti yang menggabungkan pengiraan atas permintaan dengan kaedah mengandungi yang dioptimumkan. Reka bentuk ini membolehkannya melakukan semakan pembendungan untuk bilangan besar dalam julat yang luas dengan kecekapan yang luar biasa.
Atas ialah kandungan terperinci Bagaimanakah `julat()` Python 3 Mencapai Pemeriksaan Keahlian Sebegitu Cepat untuk Nombor Besar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!