Hướng dẫn how do you create a sequence variable in python? - làm thế nào để bạn tạo một biến chuỗi 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 tạo một chuỗi các giá trị trong Python?

Sử dụng phạm vi () để tạo chuỗi các chuỗi số gọi (bắt đầu, dừng) để tạo chuỗi số từ khởi động đến dừng. Sử dụng một vòng lặp để lặp qua mỗi số trong chuỗi này và danh sách sử dụng. nối (x) để nối số vào danh sách trống nếu nó đáp ứng một điều kiện nhất định. Call range(start, stop) to generate a sequence of numbers from start up to stop . Use a for-loop to iterate over each number in this sequence and use list. append(x) to append the number to an empty list if it meets a certain condition.

Có một hàm trình tự trong Python?

Trong Python, trình tự là thuật ngữ chung cho một tập hợp được đặt hàng.Có một số loại trình tự trong Python, ba loại sau đây là quan trọng nhất.Danh sách là loại trình tự linh hoạt nhất.Các yếu tố của danh sách có thể là bất kỳ đối tượng nào và danh sách có thể thay đổi - chúng có thể được thay đổi.There are several types of sequences in Python, the following three are the most important. Lists are the most versatile sequence type. The elements of a list can be any object, and lists are mutable - they can be changed.

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.

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

Hàm phạm vi Python () tạo ra chuỗi số không thể bắt đầu từ số nguyên bắt đầu đã cho đến số nguyên dừng.Phạm vi () là một hàm tích hợp, trả về một đối tượng phạm vi bao gồm một loạt các số nguyên, mà chúng ta có thể lặp lại bằng cách sử dụng một vòng lặp. generates the immutable sequence of numbers starting from the given start integer to the stop integer. The range() is a built-in function that returns a range object that consists series of integer numbers, which we can iterate using a for loop.