Hướng dẫn what is dynamic data in python? - dữ liệu động trong python là gì?

Khoa học dữ liệu / Ngôn ngữ lập trình Python

Hãy cùng xem cách phân bổ các loại dữ liệu và biến động trong Python trong khi lặp lại thông qua một vòng lặp.

Giả sử bạn được cung cấp một danh sách (list_main) với 10 yếu tố. Bạn phải chia nó thành 3 phần. Phần đầu tiên được phân bổ cho List1, phần thứ hai cho List2 và phần thứ ba cho List3. Sự phân chia hoặc phân vùng này của danh sách tương tự như xác thực chéo K-Fold. Đối với người không quen biết, xác thực chéo là một quy trình lấy mẫu lại để truy cập vào tính chính xác của mô hình dự đoán trong thực tế. Trong xác thực chéo K gấp K, bộ dữ liệu được chia thành dữ liệu đào tạo (thường là 80%) và dữ liệu kiểm tra (thường là 20% và sẽ vẫn chưa thấy dữ liệu). Dữ liệu đào tạo một lần nữa được chia thành các lần K hoặc phân vùng mà Inturn được coi là dữ liệu đào tạo và dữ liệu xác thực. Mô hình sẽ được đào tạo về dữ liệu đào tạo và việc xác thực mô hình sẽ được thực hiện bằng cách sử dụng dữ liệu xác thực.uppose you are given a list (list_main) with 10 elements. You have to divide it into 3 parts. The first part is allocated to list1, the second part to list2, and the third part to list3. This division or partition of the list is analogous to K-fold Cross-Validation. For the uninitiated, cross-validation is a resampling procedure to access the accuracy of a predictive model in practice. In K-fold cross-validation, the dataset is divided into training data (usually 80%) and test data (usually 20% and will remain unseen data). The training data is again divided into k-folds or partitions that inturn is considered training data and validation data. The model will be trained on training data and the validation of the model will be done using validation data.

© Gufosowa

Mã sau đây chia danh sách thành 3 phân vùng hoặc phần và phân bổ các phần tử của mỗi phần cho một danh sách.

list_main = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
folds = 3
section = int(len(list_main)/folds)
start_index = 0
end_index = 0
counter = 1
for i in range(folds):
if counter == 1:
end_index += section
list1 = list_main[start_index:end_index]
counter += 1
elif counter == folds:
list3 = list_main[end_index: ]
counter += 1
elif counter < folds:
start_index = end_index
end_index += section
list2 = list_main[start_index:end_index]
counter += 1
print(f'List1: {list1}')
print(f'List2: {list2}')
print(f'List3: {list3}')
list1 = [1, 2, 3]
list2 = [4, 5, 6]
list3 = [7, 8, 9, 10]

Đầu ra:

List1: [1, 2, 3]
List2: [4, 5, 6]
List3: [7, 8, 9, 10]

Tuy nhiên, mã không phải là chung và nhiều loại mã hóa cứng hơn. Chẳng hạn, nếu số lượng bộ phận (nếp gấp) của List_Main tăng lên 4, thì một danh sách khác (List4) được yêu cầu để lưu trữ các yếu tố danh sách. Nếu nó được tăng lên 6, thì tổng số 6 danh sách được yêu cầu hoàn toàn. Để phù hợp với các thay đổi dựa trên số lượng phân vùng, mã cần phải được thay đổi. Cụ thể, danh sách mới cần được chỉ định. Tuy nhiên, điều đó dẫn đến sự phức tạp và nhầm lẫn hơn. Chẳng hạn, nếu nếp gấp = 4, thì phân vùng thứ hai và phân vùng thứ ba có cùng điều kiện trong mã trên (bộ đếm © Iambipin

Sẽ tốt hơn nếu chúng ta viết một mã chung có thể phân bổ danh sách khi số lượng nếp gấp tăng hoặc giảm. Chức năng của Globals () trong Python đã thực hiện công việc dường như không thể. Nó trả về bảng biểu tượng toàn cầu như một từ điển.

print(globals()){'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x02A8C2D0>, '__spec__': None, '__annotations__': {}, '__builtins__': , '__file__': 'demo_ref_globals.py', '__cached__': None, 'x'_ {...}}

Mã sửa đổi:

Đầu ra:

Enter the no. of folds: 5
List 0: [1, 2]
List 1: [3, 4]
List 2: [5, 6]
List 3: [7, 8]
List 4: [9, 10]

Tuy nhiên, mã không phải là chung và nhiều loại mã hóa cứng hơn. Chẳng hạn, nếu số lượng bộ phận (nếp gấp) của List_Main tăng lên 4, thì một danh sách khác (List4) được yêu cầu để lưu trữ các yếu tố danh sách. Nếu nó được tăng lên 6, thì tổng số 6 danh sách được yêu cầu hoàn toàn. Để phù hợp với các thay đổi dựa trên số lượng phân vùng, mã cần phải được thay đổi. Cụ thể, danh sách mới cần được chỉ định. Tuy nhiên, điều đó dẫn đến sự phức tạp và nhầm lẫn hơn. Chẳng hạn, nếu nếp gấp = 4, thì phân vùng thứ hai và phân vùng thứ ba có cùng điều kiện trong mã trên (bộ đếm

© Iambipin

Sẽ tốt hơn nếu chúng ta viết một mã chung có thể phân bổ danh sách khi số lượng nếp gấp tăng hoặc giảm. Chức năng của Globals () trong Python đã thực hiện công việc dường như không thể. Nó trả về bảng biểu tượng toàn cầu như một từ điển.

Mã sửa đổi:

Trong bài học này, bạn sẽ tìm hiểu về các hệ thống loại, so sánh việc gõ động và gõ tĩnh. Tất cả các ngôn ngữ lập trình bao gồm một số loại hệ thống loại chính thức hóa loại đối tượng mà nó có thể hoạt động và cách xử lý các loại đó.type systems, comparing dynamic typing and static typing. All programming languages include some kind of type system that formalizes which categories of objects it can work with and how those categories are treated.

Gõ động

Python là một ngôn ngữ được đánh máy động. Điều này có nghĩa là trình thông dịch Python chỉ kiểm tra loại khi mã chạy và loại biến được phép thay đổi trong suốt vòng đời của nó. Dưới đây là một vài ví dụ chứng minh những ý tưởng đó:dynamically typed language. This means that the Python interpreter does type checking only as code runs, and the type of a variable is allowed to change over its lifetime. Here are a couple of examples that demonstrate those ideas:

>>>

>>> if False:
...     1 + "two"  # This line never runs, so no TypeError is raised
... else:
...     1 + 2
...
3
>>> 1 + "two"  # Now this is type checked
TypeError: unsupported operand type(s) for +: 'int' and 'str'

Trong ví dụ đầu tiên, nhánh

List1: [1, 2, 3]
List2: [4, 5, 6]
List3: [7, 8, 9, 10]
0 không bao giờ chạy, vì vậy nó không bao giờ được kiểm tra. Ví dụ thứ hai cho thấy rằng khi
List1: [1, 2, 3]
List2: [4, 5, 6]
List3: [7, 8, 9, 10]
0 được đánh giá, nó sẽ tăng
List1: [1, 2, 3]
List2: [4, 5, 6]
List3: [7, 8, 9, 10]
2 vì bạn có thể thêm một số nguyên và một chuỗi trong Python.

Trong ví dụ tiếp theo này, bạn thấy các biến có thể thay đổi loại không:

>>>

>>> thing = "Hello"
>>> type(thing)


>>> thing = 28.1
>>> type(thing)

Trong ví dụ đầu tiên, nhánh

List1: [1, 2, 3]
List2: [4, 5, 6]
List3: [7, 8, 9, 10]
0 không bao giờ chạy, vì vậy nó không bao giờ được kiểm tra. Ví dụ thứ hai cho thấy rằng khi
List1: [1, 2, 3]
List2: [4, 5, 6]
List3: [7, 8, 9, 10]
0 được đánh giá, nó sẽ tăng
List1: [1, 2, 3]
List2: [4, 5, 6]
List3: [7, 8, 9, 10]
2 vì bạn có thể thêm một số nguyên và một chuỗi trong Python.

Trong ví dụ tiếp theo này, bạn thấy các biến có thể thay đổi loại không:

List1: [1, 2, 3]
List2: [4, 5, 6]
List3: [7, 8, 9, 10]
3 Trả về loại đối tượng.static typing. Static type checks are performed without running the program. In most statically typed languages, for instance C and Java, this is done as your program is compiled. The type of a variable is not allowed to change over its lifetime.

Gõ tĩnh

public class HelloTypes {

    public static void main(String[] args) {

        String thing;
        thing = "Hello World";

        System.out.println(thing);
    }
}

Đối diện của gõ động là gõ tĩnh. Kiểm tra loại tĩnh được thực hiện mà không cần chạy chương trình. Ví dụ, trong hầu hết các ngôn ngữ được gõ tĩnh C và Java, điều này được thực hiện khi chương trình của bạn được biên dịch. Loại biến không được phép thay đổi trong suốt vòng đời của nó.

Trong ví dụ

List1: [1, 2, 3]
List2: [4, 5, 6]
List3: [7, 8, 9, 10]
4 này trong Java, hãy xem phần giữa, trong đó
List1: [1, 2, 3]
List2: [4, 5, 6]
List3: [7, 8, 9, 10]
5 được định nghĩa tĩnh là một loại
List1: [1, 2, 3]
List2: [4, 5, 6]
List3: [7, 8, 9, 10]
6 và sau đó được gán giá trị
List1: [1, 2, 3]
List2: [4, 5, 6]
List3: [7, 8, 9, 10]
7:

$ javac HelloTypes.java
$ java HelloTypes.class
Hello World

Đây không phải là một khóa học trên Java, vì vậy đừng lo lắng về các chi tiết cụ thể về cách tạo mã Java. Mục đích của ví dụ này là cho bạn thấy rằng có thêm các bước trong hầu hết các ngôn ngữ được đánh máy thống kê.

public class HelloTypes {

    public static void main(String[] args) {

        String thing;
        thing = "Hello World";

        thing = 42;

        System.out.println(thing);
    }
}

Trong ví dụ tiếp theo này, bạn sẽ sử dụng lệnh

List1: [1, 2, 3]
List2: [4, 5, 6]
List3: [7, 8, 9, 10]
8 để biên dịch chương trình. Điều này tạo ra một tệp mới có cùng tên, nhưng một tiện ích mở rộng khác
List1: [1, 2, 3]
List2: [4, 5, 6]
List3: [7, 8, 9, 10]
9 thay vì
print(globals()){'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x02A8C2D0>, '__spec__': None, '__annotations__': {}, '__builtins__': , '__file__': 'demo_ref_globals.py', '__cached__': None, 'x'_ {...}}
0. Đó là tệp có thể chạy bằng lệnh
print(globals()){'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x02A8C2D0>, '__spec__': None, '__annotations__': {}, '__builtins__': , '__file__': 'demo_ref_globals.py', '__cached__': None, 'x'_ {...}}
1:

$ javac Hellotypes.java
HelloTypes.java:8: error: incompatible types: int cannot be converted to String
    thing = 42;
1 error

Nếu bạn cố gắng chỉ định lại

print(globals()){'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x02A8C2D0>, '__spec__': None, '__annotations__': {}, '__builtins__': , '__file__': 'demo_ref_globals.py', '__cached__': None, 'x'_ {...}}
2 thành một giá trị thuộc loại khác, ban đầu bạn sẽ không gặp lỗi. Chỉ khi mã được biên dịch, bạn mới thấy lỗi:

Dòng

print(globals()){'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x02A8C2D0>, '__spec__': None, '__annotations__': {}, '__builtins__': , '__file__': 'demo_ref_globals.py', '__cached__': None, 'x'_ {...}}
3 đang cố gắng thay đổi loại
print(globals()){'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x02A8C2D0>, '__spec__': None, '__annotations__': {}, '__builtins__': , '__file__': 'demo_ref_globals.py', '__cached__': None, 'x'_ {...}}
2 từ chuỗi thành int. Nếu bạn biên dịch mã này, bạn sẽ thấy lỗi:

  • Python sẽ luôn luôn là một ngôn ngữ được đánh máy động. Tuy nhiên, PEP 484 đã giới thiệu các gợi ý loại, điều này cũng có thể thực hiện kiểm tra loại tĩnh của mã python.
  • Dưới đây là một vài tài nguyên trên công cụ Bpython, vòng lặp (đọc vòng lặp inval Eval) được sử dụng trong các video này:
  • Một Python tốt hơn: Bpython vs Python

Cấu trúc dữ liệu động trong Python là gì?

Cấu trúc dữ liệu động là loại cấu trúc dữ liệu thay đổi kích thước của nó trong thời gian chạy. Các giá trị lưu trữ trong cấu trúc dữ liệu có thể được thay đổi dễ dàng hoặc là cấu trúc dữ liệu tĩnh hoặc động.that kind of data structure that changes its size during runtime. The values store in the data structure can be changed easily either it be static or dynamic data structure.

Năng động và tĩnh trong Python là gì?

Nếu loại biến được kiểm tra trong thời gian chạy của mã so với ngôn ngữ được gọi là ngôn ngữ được gõ động. Nếu loại biến được kiểm tra theo thời gian biên dịch của mã so với ngôn ngữ được gọi là ngôn ngữ được đánh máy tĩnh.

Một biến động là gì?

Các biến động tính toán các giá trị của riêng chúng bằng cách thực thi các câu lệnh và biểu thức logic.Một biến động gán bản thân kết quả của tính toán hoặc hoạt động.Các loại biến động là chuỗi động, số động và đúng thật/sai (boolean).compute their own values by executing statements and logical expressions. A dynamic variable assigns itself the result of a calculation or operation. The dynamic variable types are dynamic string, dynamic number, and dynamic True/False (Boolean).

Sự khác biệt giữa biến tĩnh và biến động trong Python là gì?

Câu trả lời nhanh: Các thuộc tính tĩnh là các biến được xác định một lần cho lớp và được chia sẻ bởi tất cả các trường hợp. Thuộc tínhdynamic là các biến được xác định cho các trường hợp riêng lẻ.Static attributes are variables defined once for the class and shared by all instances. Dynamic attributes are variables defined for individual instances only.