Hướng dẫn number sequence program in python - chương trình dãy số trong python

Sự khác biệt tinh tế giữa các phương pháp Python mà bạn đã biết

Ảnh của WOC trong Tech

Trong suốt sinh viên đại học, tôi sẽ nghe thấy cụm từ Có một số cách để da một con mèo được các giảng viên lặp đi lặp lại trong quá trình toán, các lớp toán học và vật lý ứng dụng. Thật khó khăn và bạo lực như tôi đã tìm thấy cụm từ Mark Twain này, nó bị mắc kẹt với tôi (thật kỳ lạ) như một lời nhắc nhở nhẹ nhàng rằng luôn có vô số tuyến đường có thể xảy ra mà người ta có thể thực hiện để đạt được mục tiêu. Điều này giúp tôi khá nhiều khi quyết định sử dụng phương pháp nào trong mã hóa.

Trong những ngày đầu của tôi, tất cả những gì tôi biết là phạm vi () như một phương pháp để tạo ra các chuỗi tăng đơn điệu (hoặc giảm) trong Python. Sau đó, tôi đã được giới thiệu với Xrange () và Numpy.Arange () sau đó khiến tôi đi Hmmm, với tư cách là một người mới, chiến lược quyết định sử dụng chức năng nào là gì?

1. Phương thức tích hợp: phạm vi ()

Phạm vi phương thức tích hợp ([start,] stop, [bước]) là phần giới thiệu đầu tiên của tôi về việc tạo ra các chuỗi trong Python. Các đối số tùy chọn trong hàm được hiển thị trong dấu ngoặc vuông. Phương thức phạm vi () tạo ra một đối tượng bất biến là một chuỗi các số. Đối tượng phạm vi () có thể dễ dàng được chuyển đổi thành danh sách python bằng cách đặt nó trong phương thức danh sách, ví dụ, tạo danh sách các giá trị giữa 10 (bắt đầu) và 0 (dừng) giảm theo mức tăng 2 (bước).

>>list(range(10,0,-2))
[10, 8, 6, 4, 2]

Phương pháp này đã được chứng minh là rất hữu ích trong các vòng lặp và danh sách toàn diện được cho là nó được tích hợp và hiệu quả. Để đo tốc độ của nó, tôi đã viết tập lệnh rất đơn giản này, cung cấp một mẫu lớn thời gian để thực hiện phạm vi (10). Một phân phối lớn của Runtimes (RT) cung cấp một thước đo công bằng về mức độ nhanh chóng tạo đối tượng () đối tượng, trung bình.

rt=[]for _ in range(1000000):
t1 =time.time()
seq = range(val)
rt.append(time.time()-t1)
rt_mean = np.mean(rt)*1.e9
rt_std = np.std(rt)*1.e9
print(u'range() has an average runtime of %.0f \u00B1 %.0f ns'%(rt_mean,rt_std))

Kịch bản ngắn gọn này cung cấp thời gian chạy trung bình và độ không đảm bảo 1σ (hoặc độ lệch chuẩn) trong nano giây. Người ta có thể sử dụng phương thức ma thuật %thời gian để có được một biện pháp tương tự. Chạy tập lệnh này cung cấp cho chúng tôi:

range() has an average runtime of 478 ± 739 ns

Có vẻ đủ nhanh nhưng có lựa chọn thay thế nhanh hơn không?

2. Phương thức tích hợp Python 2: Xrange ()

Một phương pháp tích hợp khác mà bạn có thể đã phát hiện ra trước khi chuyển sang Python 3 là Xrange ([bắt đầu,] Dừng, [Bước]). Nó xuất ra một đối tượng máy phát. Giống như phạm vi () Nó rất hữu ích trong các vòng lặp và cũng có thể được chuyển đổi thành một đối tượng danh sách. Sử dụng một thử nghiệm tương tự như trước đây, chúng ta có thể đo thời gian chạy trung bình của nó thu được kết quả:

xrange() has an average runtime of 370 ± 682 ns

Với tỷ suất lợi nhuận lỗi, tốc độ thực thi cho phạm vi () và xrange () là khá giống nhau. Sự khác biệt chính là ở đầu ra - một điều không thể được đưa ra theo phạm vi () và đầu ra đối tượng của trình tạo bởi xrange (). So sánh việc sử dụng bộ nhớ giữa hai đối tượng cung cấp,

>> print('Memory use of iterable: %d'%(sys.getsizeof(range_seq)) )
Memory use of iterable: 152
>> print('Memory use of generator object: %d'%(sys.getsizeof(xrange_seq)) )
Memory use of generator object: 40

Mặc dù không có sự khác biệt về hiệu quả, đối tượng xrange () nhỏ hơn đáng kể về kích thước byte. Thêm một trình tạo trình tự mà chúng ta có thể xem xét là một trình tạo trong thư viện Numpy.

3. Phương pháp Numpy: Numpy.Arange ()

Phương thức numpy.arange ([start,] stop, [bước,] dtype = none) từ numpy cung cấp chức năng để tạo chuỗi. Nó tạo ra một đối tượng mảng numpy (hoặc numpy.ndarray). Chạy một tập lệnh tương tự để xác định năng suất thời gian chạy trung bình,[start, ]stop, [step, ]dtype=None) from NumPy provides functionality for generating sequences. It generates a NumPy array object (or numpy.ndarray). Running a similar script to determine the average runtime yields,

numpy.arange() has an average runtime of 1111 ± 958 ns

Dựa trên thử nghiệm này, Numpy.Arange () thực hiện cho mức tăng gấp đôi thời gian chạy mà phạm vi đó () và xrange () DO, trung bình.

Với xrange () bị giới hạn ở Python 2 và numpy.arange () là một yếu tố chậm hơn trong việc tạo ra một chuỗi so với cả xrange () và phạm vi (), câu trả lời có vẻ khá rõ ràng. Phương pháp phạm vi () là cách hiệu quả nhất để tạo ra chuỗi tăng hoặc giảm đơn điệu trong Python. Mặc dù điều này có thể đúng, các đối tượng được tạo bởi mỗi phương thức sử dụng hết bộ nhớ khác nhau.

Sự cảnh báo - đầu ra của từng phương pháp

Thật vậy, phạm vi () ExecutesFaster so với numpy.arange () và xuất ra một đối tượng có thể được chuyển đổi thành một danh sách có thể lặp lại. Mặt khác, numpy.arange () cung cấp cho bạn một numpy.ndarray. Không nghi ngờ gì, phạm vi () là một lựa chọn tốt hơn trong các vòng lặp. Tuy nhiên, khi nói đến hoạt động trên chuỗi kết quả, các mảng numpy có lợi thế rõ ràng trong cả mức tiêu thụ và tốc độ bộ nhớ.

Bắt đầu với bộ nhớ, chúng ta có thể tìm hiểu lượng bộ nhớ được tiêu thụ bởi một đối tượng danh sách Python so với mảng Numpy.

>> print('Memory use of iterable: %d'%(sys.getsizeof(range_seq)) )
Memory use of iterable: 152
>> print('Memory use of numpy.ndarray: %d '%(sys.getsizeof(arange_seq)) )
Memory use of numpy.ndarray: 80

Các mảng Numpy chỉ đơn giản là chiếm ít không gian hơn trong cửa hàng bộ nhớ trình biên dịch giúp chúng hiệu quả hơn để hoạt động. Đây là điều mà người ta có thể kiểm tra dễ dàng so sánh tốc độ thực hiện các hoạt động số học cơ bản trong danh sách và numpy.

Nói chung, khám phá nhiều cách để khử một con mèo, có thể nói, trong một hành trình Python Python có thể cung cấp cái nhìn sâu sắc để hiểu được tầm quan trọng của tốc độ, chức năng và sử dụng bộ nhớ của các loại dữ liệu và phương pháp khác nhau. Quan trọng nhất, viết các bài kiểm tra ngắn để so sánh Runtimes có thể giúp một phân tích phương pháp nào sẽ tăng cả độ sạch và hiệu quả của mã.

Tài liệu tham khảo bổ sung:

[1] Geek cho bài viết của Geek. Tiêu đề: Phạm vi () vs xrange () trong Python,

[2] Geek cho bài viết của Geek. Tiêu đề: Py Python | phạm vi () không trả về một iterator ”

. Tiêu đề: Sự khác biệt giữa phạm vi và Arange?

Làm thế nào để bạn viết một chuỗi các số trong Python?

Phương thức tích hợp: phạm vi () Phương thức phạm vi () tạo ra một đối tượng bất biến là một chuỗi các số. Đối tượng phạm vi () có thể dễ dàng được chuyển đổi thành danh sách python bằng cách đặt nó trong phương thức danh sách, ví dụ, tạo danh sách các giá trị giữa 10 (bắt đầu) và 0 (dừng) giảm theo mức tăng 2 (bước).range() The range() method generates an immutable object that is a sequence of numbers. The range() object can easily be converted into a Python list by enclosing it in the list method, for example, creating a list of values between 10 (start) and 0 (stop) decreasing in increments of 2 (step).

Một ví dụ về trình tự trong Python là gì?

Ví dụ về các chuỗi bao gồm chuỗi, danh sách, bộ dữ liệu, chuỗi byte, mảng byte và các đối tượng phạm vi.Những bộ sưu tập bao gồm các bộ và từ điển.strings, lists, tuples, bytes sequences, bytes arrays, and range objects. Those of collections include sets and dictionaries.

Seq () trong Python là gì?

SEQ là ngôn ngữ pythonic cho bộ gen tính toán và tin sinh học.a Pythonic language for computational genomics and bioinformatics.

Làm thế nào để bạn tạo một danh sách từ 1 đến 10 trong Python?

Python: Tạo và in một danh sách các số từ 1 đến 10..
Giải pháp mẫu:.
Mã Python: nums = phạm vi (1,10) in (danh sách (nums)) in (danh sách (bản đồ (str, nums))) ....
Flowchart:.
Trình chỉnh sửa mã Python: ....
Có một cách khác để giải quyết giải pháp này?....
Trước đây: Viết chương trình Python để in các chữ cái từ bảng chữ cái tiếng Anh từ A-Z và A-Z ..