Rumah > pembangunan bahagian belakang > Tutorial Python > Berapa banyak kaedah gelung pantas yang anda tahu dalam Python?

Berapa banyak kaedah gelung pantas yang anda tahu dalam Python?

WBOY
Lepaskan: 2023-04-13 09:13:06
ke hadapan
1865 orang telah melayarinya

Hai semua, saya somenzz, hari ini kita akan mengkaji kaedah gelung terpantas dalam Python.

Pelbagai postur

Contohnya ada satu tugasan mudah iaitu menjumlahkan dari 1 hingga 100 juta Kita boleh mencapainya sekurang-kurangnya dalam 7 cara, disenaraikan seperti berikut:

1. gelung while

def while_loop(n=100_000_000):
i = 0
s = 0
while i < n:
s += i
i += 1
return s
Salin selepas log masuk

2 untuk gelung

def for_loop(n=100_000_000):
s = 0
for i in range(n):
s += i
return s
Salin selepas log masuk

3.

def sum_range(n=100_000_000):
return sum(range(n))
Salin selepas log masuk
4.

def sum_generator(n=100_000_000):
return sum(i for i in range(n))
Salin selepas log masuk
5. jumlah kefahaman senarai (list comprehension)

def sum_list_comp(n=100_000_000):
return sum([i for i in range(n)])
Salin selepas log masuk
6 🎜>

Hasil yang diperolehi oleh 7 kaedah di atas adalah sama, tetapi masa yang digunakan adalah berbeza Anda boleh meneka kaedah mana yang paling cepat, dan kemudian lihat hasil pelaksanaan kod berikut:

import numpy
def sum_numpy(n=100_000_000):
return numpy.sum(numpy.arange(n, dtype=numpy.int64))
Salin selepas log masuk

Keputusan pelaksanaan adalah seperti berikut:

import numpy
def sum_numpy_python_range(n=100_000_000):
return numpy.sum(range(n))
Salin selepas log masuk

import timeit

def main():
l_align = 25
print(f'{"1、while 循环":<{l_align}} {timeit.timeit(while_loop, number=1):.6f}')
print(f"{'2、for 循环':<{l_align}}{timeit.timeit(for_loop, number=1):.6f}")
print(f'{"3、sum range":<{l_align}} {timeit.timeit(sum_range, number=1):.6f}')
print(f'{"4、sum generator":<{l_align}} {timeit.timeit(sum_generator, number=1):.6f}')
print(f'{"5、sum list comprehension":<{l_align}} {timeit.timeit(sum_list_comp, number=1):.6f}')
print(f'{"6、sum numpy":<{l_align}} {timeit.timeit(sum_numpy, number=1):.6f}')
print(f'{"7、sum numpy python range":<{l_align}} {timeit.timeit(sum_numpy_python_range, number=1):.6f}')

if __name__ == '__main__':
main()
Salin selepas log masuk
Cara yang lebih pantas

sekat daripada sementara

Berapa banyak kaedah gelung pantas yang anda tahu dalam Python?untuk dan sementara pada dasarnya adalah melakukan perkara yang sama, tetapi sementara adalah kod Python tulen, dan untuk panggilan sambungan C untuk menambah dan mengehadkan pembolehubah C. Gelung while mewakili Python, jadi for adalah lebih pantas daripada while.

Jumlah terbina dalam Numpy adalah lebih pantas daripada jumlah Python

Numpy terutamanya ditulis dalam C. Untuk fungsi yang sama, numpy pastinya lebih pantas daripada julat Python cepat.

Penggunaan silang akan menjadi lebih perlahan

Jumlah Numpy digunakan dalam kombinasi dengan julat Python, dan hasilnya adalah yang paling lama, lihat kaedah 7. Adalah lebih baik untuk menggunakan pakej numpy untuk menyelesaikan tugas, seperti kaedah 6.

Penjana lebih pantas daripada pemahaman senarai

Penjana malas dan tidak akan menjana 100 juta nombor sekaligus, manakala pemahaman senarai akan memperuntukkan semua nombor sekaligus dan menduduki memori , cache tidak boleh digunakan dengan berkesan, jadi prestasinya lebih teruk sedikit.

Atas ialah kandungan terperinci Berapa banyak kaedah gelung pantas yang anda tahu dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:51cto.com
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan