Đây không phải là kiểu dữ liệu được hỗ trợ trong Python

Các mô-đun được mô tả trong chương này cung cấp nhiều loại dữ liệu chuyên biệt như ngày và giờ, mảng loại cố định, hàng đợi heap, hàng đợi hai đầu và liệt kê

Python cũng cung cấp một số kiểu dữ liệu dựng sẵn, cụ thể là,

L = list(range(10))
L
3,
L = list(range(10))
L
4,
L = list(range(10))
L
5 và
L = list(range(10))
L
6, và
L = list(range(10))
L
7. Lớp
L = list(range(10))
L
8 được sử dụng để chứa các chuỗi Unicode và các lớp
L = list(range(10))
L
9 và
# Python code
result = 0
for i in range(100):
    result += i
00 được sử dụng để chứa dữ liệu nhị phân

Các mô-đun sau đây được ghi lại trong chương này

  • # Python code
    result = 0
    for i in range(100):
        result += i
    
    01 — Các loại ngày và giờ cơ bản
    • Đối tượng nhận thức và ngây thơ
    • hằng số
    • Các loại có sẵn
      • Tài sản chung
      • Xác định xem một đối tượng là Aware hay Naive
    • # Python code
      result = 0
      for i in range(100):
          result += i
      
      02 đối tượng
      • Ví dụ về cách sử dụng.
        # Python code
        result = 0
        for i in range(100):
            result += i
        
        02
    • L = list(range(10))
      L
      
      41 đối tượng
      • Ví dụ về cách sử dụng.
        L = list(range(10))
        L
        
        41
    • # Python code
      result = 0
      for i in range(100):
          result += i
      
      01 đối tượng
      • Ví dụ về cách sử dụng.
        # Python code
        result = 0
        for i in range(100):
            result += i
        
        01
    • L = list(range(10))
      L
      
      45 đối tượng
      • Ví dụ về cách sử dụng.
        L = list(range(10))
        L
        
        45
    • L = list(range(10))
      L
      
      47 đối tượng
    • L = list(range(10))
      L
      
      48 đối tượng
    • Hành vi
      L = list(range(10))
      L
      
      49 và
      L = list(range(10))
      L
      
      50
      • Mã định dạng
        L = list(range(10))
        L
        
        49 và
        L = list(range(10))
        L
        
        50
      • Chi tiết kỹ thuật
  • L = list(range(10))
    L
    
    53 — Hỗ trợ múi giờ IANA
    • Sử dụng
      L = list(range(10))
      L
      
      54
    • Nguồn dữ liệu
      • Định cấu hình nguồn dữ liệu
        • Cấu hình thời gian biên dịch
        • cấu hình môi trường
        • cấu hình thời gian chạy
    • Lớp
      L = list(range(10))
      L
      
      54
      • biểu diễn chuỗi
      • Số sê-ri dưa chua
    • Chức năng
    • Toàn cầu
    • Ngoại lệ và cảnh báo
  • L = list(range(10))
    L
    
    56 — Các chức năng chung liên quan đến lịch
  • L = list(range(10))
    L
    
    57 — Kiểu dữ liệu vùng chứa
    • L = list(range(10))
      L
      
      58 đối tượng
      • L = list(range(10))
        L
        
        58 Ví dụ và Công thức
    • L = list(range(10))
      L
      
      60 đối tượng
    • L = list(range(10))
      L
      
      61 đối tượng
      • L = list(range(10))
        L
        
        61 Bí quyết
    • L = list(range(10))
      L
      
      63 đối tượng
      • L = list(range(10))
        L
        
        63 Ví dụ
    • L = list(range(10))
      L
      
      65 Chức năng xuất xưởng cho các bộ dữ liệu có trường được đặt tên
    • L = list(range(10))
      L
      
      66 đối tượng
      • L = list(range(10))
        L
        
        66 Ví dụ và Công thức
    • L = list(range(10))
      L
      
      68 đối tượng
    • L = list(range(10))
      L
      
      69 đối tượng
    • L = list(range(10))
      L
      
      70 đối tượng
  • L = list(range(10))
    L
    
    71 — Lớp cơ sở trừu tượng cho vùng chứa
    • Bộ sưu tập Các lớp cơ sở trừu tượng
    • Bộ sưu tập Các lớp cơ sở trừu tượng – Mô tả chi tiết
    • Ví dụ và Bí quyết
  • L = list(range(10))
    L
    
    72 — Thuật toán xếp hàng heap
    • Ví dụ cơ bản
    • Ghi chú triển khai hàng đợi ưu tiên
    • Học thuyết
  • L = list(range(10))
    L
    
    73 — Thuật toán chia đôi mảng
    • Ghi chú hiệu suất
    • Tìm kiếm danh sách được sắp xếp
    • ví dụ
  • L = list(range(10))
    L
    
    74 — Mảng giá trị số hiệu quả
  • L = list(range(10))
    L
    
    75 - Tài liệu tham khảo yếu
    • Đối tượng tham chiếu yếu
    • Thí dụ
    • đối tượng hoàn thiện
    • So sánh các bộ hoàn thiện với các phương pháp
      L = list(range(10))
      L
      
      76
  • L = list(range(10))
    L
    
    77 — Tạo kiểu động và đặt tên cho các kiểu dựng sẵn
    • Tạo kiểu động
    • Các loại phiên dịch tiêu chuẩn
    • Các lớp và chức năng tiện ích bổ sung
    • Chức năng tiện ích Coroutine
  • L = list(range(10))
    L
    
    78 — Thao tác sao chép nông và sâu
  • L = list(range(10))
    L
    
    79 — Máy in dữ liệu đẹp
    • Đối tượng PrettyPrinter
    • Thí dụ
  • L = list(range(10))
    L
    
    80 — Triển khai thay thế
    L = list(range(10))
    L
    
    81
    • Đối tượng đại diện
    • Phân lớp đối tượng Repr
  • L = list(range(10))
    L
    
    82 — Hỗ trợ liệt kê
    • Nội dung mô-đun
    • Loại dữ liệu
      • Tên
        L = list(range(10))
        L
        
        83 được hỗ trợ
      • Tên
        L = list(range(10))
        L
        
        84 được hỗ trợ
    • Tiện ích và trang trí
    • ghi chú
  • L = list(range(10))
    L
    
    85 — Chức năng hoạt động với các cấu trúc dạng đồ thị
    • ngoại lệ

Khoa học và tính toán dựa trên dữ liệu hiệu quả đòi hỏi phải hiểu cách dữ liệu được lưu trữ và thao tác. Phần này phác thảo và đối chiếu cách các mảng dữ liệu được xử lý bằng chính ngôn ngữ Python và cách NumPy cải thiện điều này. Hiểu được sự khác biệt này là nền tảng để hiểu phần lớn nội dung xuyên suốt phần còn lại của cuốn sách.

Người dùng Python thường bị thu hút bởi tính dễ sử dụng của nó, một phần trong số đó là tính năng gõ động. Trong khi một ngôn ngữ kiểu tĩnh như C hoặc Java yêu cầu mỗi biến phải được khai báo rõ ràng thì một ngôn ngữ kiểu động như Python lại bỏ qua đặc tả này. Ví dụ: trong C, bạn có thể chỉ định một thao tác cụ thể như sau

/* C code */
int result = 0;
for(int i=0; i<100; i++){
    result += i;
}

Trong khi trong Python, hoạt động tương đương có thể được viết theo cách này

# Python code
result = 0
for i in range(100):
    result += i

Lưu ý sự khác biệt chính. trong C, các kiểu dữ liệu của từng biến được khai báo rõ ràng, trong khi ở Python, các kiểu được suy ra động. Điều này có nghĩa là, ví dụ, chúng ta có thể gán bất kỳ loại dữ liệu nào cho bất kỳ biến nào

# Python code
x = 4
x = "four"

Ở đây chúng tôi đã chuyển nội dung của

struct _longobject {
    long ob_refcnt;
    PyTypeObject *ob_type;
    size_t ob_size;
    long ob_digit[1];
};
8 từ một số nguyên sang một chuỗi. Điều tương tự trong C sẽ dẫn đến (tùy thuộc vào cài đặt trình biên dịch) đến lỗi biên dịch hoặc các hậu quả không mong muốn khác

/* C code */
int x = 4;
x = "four";  // FAILS

Loại linh hoạt này là một phần giúp Python và các ngôn ngữ được nhập động khác trở nên thuận tiện và dễ sử dụng. Hiểu cách thức hoạt động của nó là một phần quan trọng của việc học để phân tích dữ liệu hiệu quả và hiệu quả với Python. Nhưng điều mà tính linh hoạt của kiểu này cũng chỉ ra là thực tế là các biến Python không chỉ có giá trị của chúng; . Chúng ta sẽ khám phá điều này nhiều hơn trong các phần tiếp theo

Một số nguyên trong Python không chỉ là một số nguyên¶

Việc triển khai Python tiêu chuẩn được viết bằng C. Điều này có nghĩa là mọi đối tượng Python chỉ đơn giản là một cấu trúc C được ngụy trang khéo léo, không chỉ chứa giá trị của nó mà còn chứa các thông tin khác. Ví dụ: khi chúng tôi xác định một số nguyên trong Python, chẳng hạn như

struct _longobject {
    long ob_refcnt;
    PyTypeObject *ob_type;
    size_t ob_size;
    long ob_digit[1];
};
9, thì
struct _longobject {
    long ob_refcnt;
    PyTypeObject *ob_type;
    size_t ob_size;
    long ob_digit[1];
};
8 không chỉ là số nguyên "thô". Nó thực sự là một con trỏ tới cấu trúc C phức hợp, chứa một số giá trị. Nhìn qua Python 3. 4, chúng tôi thấy rằng định nghĩa kiểu số nguyên (dài) trông giống như thế này (khi các macro C được mở rộng)

struct _longobject {
    long ob_refcnt;
    PyTypeObject *ob_type;
    size_t ob_size;
    long ob_digit[1];
};

Một số nguyên duy nhất trong Python 3. 4 thực sự chứa bốn mảnh

  • L = list(range(10))
    L
    
    1, một số tham chiếu giúp Python âm thầm xử lý cấp phát và giải phóng bộ nhớ
  • L = list(range(10))
    L
    
    2, mã hóa loại biến
  • L = list(range(10))
    L
    
    3, chỉ định kích thước của các thành viên dữ liệu sau
  • L = list(range(10))
    L
    
    4, chứa giá trị số nguyên thực tế mà chúng tôi muốn biến Python đại diện

Điều này có nghĩa là có một số chi phí trong việc lưu trữ một số nguyên trong Python so với một số nguyên trong ngôn ngữ được biên dịch như C, như được minh họa trong hình dưới đây

Đây không phải là kiểu dữ liệu được hỗ trợ trong Python

Ở đây

L = list(range(10))
L
5 là một phần của cấu trúc chứa số lượng tham chiếu, mã loại và các phần khác được đề cập trước đó

Lưu ý sự khác biệt ở đây. số nguyên C về cơ bản là nhãn cho một vị trí trong bộ nhớ có byte mã hóa giá trị số nguyên. Số nguyên Python là một con trỏ tới một vị trí trong bộ nhớ chứa tất cả thông tin đối tượng Python, bao gồm các byte chứa giá trị số nguyên. Thông tin bổ sung này trong cấu trúc số nguyên Python là thứ cho phép Python được mã hóa một cách tự do và linh hoạt. Tuy nhiên, tất cả thông tin bổ sung này trong các loại Python đều phải trả giá, điều này trở nên đặc biệt rõ ràng trong các cấu trúc kết hợp nhiều đối tượng này

Danh sách Python không chỉ là một danh sách¶

Bây giờ hãy xem xét điều gì sẽ xảy ra khi chúng ta sử dụng cấu trúc dữ liệu Python chứa nhiều đối tượng Python. Vùng chứa đa phần tử có thể thay đổi tiêu chuẩn trong Python là danh sách. Chúng ta có thể tạo một danh sách các số nguyên như sau

Trong 1]

________số 8

Ra[1]

# Python code
result = 0
for i in range(100):
    result += i
4

Trong 2]

# Python code
result = 0
for i in range(100):
    result += i
5

Ra[2]

# Python code
result = 0
for i in range(100):
    result += i
6

Hoặc, tương tự, một danh sách các chuỗi

Trong 3]

# Python code
result = 0
for i in range(100):
    result += i
7

Ra[3]

# Python code
result = 0
for i in range(100):
    result += i
0

Trong [4]

# Python code
result = 0
for i in range(100):
    result += i
1

Ra[4]

# Python code
result = 0
for i in range(100):
    result += i
2

Do kiểu gõ động của Python, chúng ta thậm chí có thể tạo các danh sách không đồng nhất

Trong [5]

# Python code
result = 0
for i in range(100):
    result += i
3

Ra[5]

# Python code
result = 0
for i in range(100):
    result += i
4

Nhưng sự linh hoạt này phải trả giá. để cho phép các loại linh hoạt này, mỗi mục trong danh sách phải chứa thông tin loại, số lượng tham chiếu và thông tin khác của riêng nó–nghĩa là mỗi mục là một đối tượng Python hoàn chỉnh. Trong trường hợp đặc biệt tất cả các biến đều cùng loại, phần lớn thông tin này là dư thừa. lưu trữ dữ liệu trong một mảng kiểu cố định có thể hiệu quả hơn nhiều. Sự khác biệt giữa danh sách kiểu động và mảng kiểu cố định (kiểu NumPy) được minh họa trong hình dưới đây

Đây không phải là kiểu dữ liệu được hỗ trợ trong Python

Ở cấp độ triển khai, mảng về cơ bản chứa một con trỏ tới một khối dữ liệu liền kề. Mặt khác, danh sách Python chứa một con trỏ tới một khối con trỏ, mỗi con trỏ lần lượt trỏ tới một đối tượng Python đầy đủ giống như số nguyên Python mà chúng ta đã thấy trước đó. Một lần nữa, lợi thế của danh sách là tính linh hoạt. bởi vì mỗi phần tử danh sách là một cấu trúc đầy đủ chứa cả dữ liệu và thông tin loại, danh sách có thể chứa đầy dữ liệu thuộc bất kỳ loại mong muốn nào. Các mảng kiểu NumPy loại cố định thiếu tính linh hoạt này, nhưng hiệu quả hơn nhiều để lưu trữ và thao tác dữ liệu

Mảng kiểu cố định trong Python¶

Python cung cấp một số tùy chọn khác nhau để lưu trữ dữ liệu trong bộ đệm dữ liệu loại cố định, hiệu quả. Mô-đun

L = list(range(10))
L
6 tích hợp sẵn (có sẵn từ Python 3. 3) có thể được sử dụng để tạo các mảng dày đặc thuộc loại đồng nhất

Trong [6]

# Python code
result = 0
for i in range(100):
    result += i
5

Ra[6]

# Python code
result = 0
for i in range(100):
    result += i
6

Đây

L = list(range(10))
L
7 là mã loại cho biết nội dung là số nguyên

Tuy nhiên, hữu ích hơn nhiều là đối tượng

L = list(range(10))
L
8 của gói NumPy. Trong khi đối tượng
L = list(range(10))
L
6 của Python cung cấp khả năng lưu trữ hiệu quả dữ liệu dựa trên mảng, NumPy bổ sung thêm các hoạt động hiệu quả này trên dữ liệu đó. Chúng ta sẽ khám phá các hoạt động này trong các phần sau;

Chúng ta sẽ bắt đầu với việc nhập NumPy tiêu chuẩn, dưới bí danh

# Python code
result = 0
for i in range(100):
    result += i
40

Trong [7]

# Python code
result = 0
for i in range(100):
    result += i
7

Tạo mảng từ danh sách Python¶

Đầu tiên, chúng ta có thể sử dụng

# Python code
result = 0
for i in range(100):
    result += i
41 để tạo mảng từ danh sách Python

Trong [8]

# Python code
result = 0
for i in range(100):
    result += i
8

Ra[8]

# Python code
result = 0
for i in range(100):
    result += i
9

Hãy nhớ rằng không giống như danh sách Python, NumPy bị hạn chế đối với các mảng chứa cùng loại. Nếu các loại không khớp, NumPy sẽ upcast nếu có thể (ở đây, các số nguyên được up lên thành dấu phẩy động)

Trong [9]

# Python code
x = 4
x = "four"
0

Ra[9]

# Python code
x = 4
x = "four"
1

Nếu chúng ta muốn thiết lập rõ ràng kiểu dữ liệu của mảng kết quả, chúng ta có thể sử dụng từ khóa

# Python code
result = 0
for i in range(100):
    result += i
42

Trong [10]

# Python code
x = 4
x = "four"
2

Ra[10]

# Python code
x = 4
x = "four"
3

Cuối cùng, không giống như danh sách Python, mảng NumPy rõ ràng có thể là đa chiều;

Trong [11]

# Python code
x = 4
x = "four"
4

Ra[11]

# Python code
x = 4
x = "four"
5

Các danh sách bên trong được coi là các hàng của mảng hai chiều kết quả

Tạo mảng từ đầu¶

Đặc biệt đối với các mảng lớn hơn, việc tạo các mảng từ đầu sẽ hiệu quả hơn bằng cách sử dụng các quy trình được tích hợp trong NumPy. Dưới đây là một số ví dụ

Trong [12]

# Python code
x = 4
x = "four"
6

Ra[12]

# Python code
x = 4
x = "four"
7

Trong [13]

# Python code
x = 4
x = "four"
8

Ra[13]

# Python code
x = 4
x = "four"
9

Trong [14]

/* C code */
int x = 4;
x = "four";  // FAILS
0

Ra[14]

/* C code */
int x = 4;
x = "four";  // FAILS
1

Trong [15]

/* C code */
int x = 4;
x = "four";  // FAILS
2

Ra[15]

/* C code */
int x = 4;
x = "four";  // FAILS
3

Trong [16]

/* C code */
int x = 4;
x = "four";  // FAILS
4

Ra[16]

/* C code */
int x = 4;
x = "four";  // FAILS
5

Trong [17]

/* C code */
int x = 4;
x = "four";  // FAILS
6

Ra[17]

/* C code */
int x = 4;
x = "four";  // FAILS
7

Trong [18]

/* C code */
int x = 4;
x = "four";  // FAILS
8

Hết[18]

/* C code */
int x = 4;
x = "four";  // FAILS
9

Trong 19]

struct _longobject {
    long ob_refcnt;
    PyTypeObject *ob_type;
    size_t ob_size;
    long ob_digit[1];
};
0

Hết[19]

struct _longobject {
    long ob_refcnt;
    PyTypeObject *ob_type;
    size_t ob_size;
    long ob_digit[1];
};
1

Trong 20]

struct _longobject {
    long ob_refcnt;
    PyTypeObject *ob_type;
    size_t ob_size;
    long ob_digit[1];
};
2

Hết[20]

struct _longobject {
    long ob_refcnt;
    PyTypeObject *ob_type;
    size_t ob_size;
    long ob_digit[1];
};
3

Trong [21]

struct _longobject {
    long ob_refcnt;
    PyTypeObject *ob_type;
    size_t ob_size;
    long ob_digit[1];
};
4

Hết[21]

struct _longobject {
    long ob_refcnt;
    PyTypeObject *ob_type;
    size_t ob_size;
    long ob_digit[1];
};
5

Kiểu dữ liệu chuẩn NumPy¶

Mảng NumPy chứa các giá trị của một loại duy nhất, vì vậy điều quan trọng là phải có kiến ​​thức chi tiết về các loại đó và các hạn chế của chúng. Vì NumPy được xây dựng bằng C nên các loại này sẽ quen thuộc với người dùng C, Fortran và các ngôn ngữ liên quan khác

Các kiểu dữ liệu NumPy tiêu chuẩn được liệt kê trong bảng sau. Lưu ý rằng khi xây dựng một mảng, chúng có thể được chỉ định bằng một chuỗi

struct _longobject {
    long ob_refcnt;
    PyTypeObject *ob_type;
    size_t ob_size;
    long ob_digit[1];
};
6

Hoặc sử dụng đối tượng NumPy được liên kết

struct _longobject {
    long ob_refcnt;
    PyTypeObject *ob_type;
    size_t ob_size;
    long ob_digit[1];
};
7

Kiểu dữ liệu Mô tả

# Python code
result = 0
for i in range(100):
    result += i
43Boolean (Đúng hoặc Sai) được lưu trữ dưới dạng byte
# Python code
result = 0
for i in range(100):
    result += i
44Kiểu số nguyên mặc định (giống như C
# Python code
result = 0
for i in range(100):
    result += i
45; thông thường là
# Python code
result = 0
for i in range(100):
    result += i
46 hoặc
# Python code
result = 0
for i in range(100):
    result += i
47)
# Python code
result = 0
for i in range(100):
    result += i
48Giống với C
# Python code
result = 0
for i in range(100):
    result += i
49 (thường là
# Python code
result = 0
for i in range(100):
    result += i
47 hoặc
# Python code
result = 0
for i in range(100):
    result += i
46)
# Python code
result = 0
for i in range(100):
    result += i
52Số nguyên được sử dụng để lập chỉ mục (giống như C
# Python code
result = 0
for i in range(100):
    result += i
53; thông thường là
# Python code
result = 0
for i in range(100):
    result += i
47 hoặc
# Python code
result = 0
for i in range(100):
    result += i
46 .
# Python code
result = 0
for i in range(100):
    result += i
66 Phao nửa chính xác. bit dấu, 5 bit số mũ, 10 bit mantissa
# Python code
result = 0
for i in range(100):
    result += i
67 Phao chính xác đơn. bit dấu, 8 bit số mũ, 23 bit mantissa
# Python code
result = 0
for i in range(100):
    result += i
65 Phao chính xác kép. bit dấu, 11 bit số mũ, 52 bit phần định trị ________ 169 Viết tắt của ________ 170.
# Python code
result = 0
for i in range(100):
    result += i
71Số phức, được biểu thị bằng hai số float 32 bit
# Python code
result = 0
for i in range(100):
    result += i
70Số phức, được biểu thị bằng hai số float 64 bit

Có thể có đặc tả loại nâng cao hơn, chẳng hạn như chỉ định số cuối lớn hoặc nhỏ; . NumPy cũng hỗ trợ các loại dữ liệu phức hợp, sẽ được đề cập trong Dữ liệu có cấu trúc. Mảng có cấu trúc của NumPy

Các loại dữ liệu được hỗ trợ trong python là gì?

Kiểu dữ liệu Python .
Kiểu dữ liệu số. int, float, phức tạp
Kiểu dữ liệu chuỗi. str
các loại trình tự. danh sách, tuple, phạm vi
loại nhị phân. byte, bytearray, memoryview
Loại dữ liệu ánh xạ. mệnh lệnh
kiểu Boolean. bool
Đặt kiểu dữ liệu. bộ, bộ đông lạnh. Kiểu dữ liệu số Python. Kiểu dữ liệu số Python được sử dụng để chứa các giá trị số như;

4 kiểu dữ liệu chính trong python là gì?

Sau đây là kiểu dữ liệu chuẩn hoặc tích hợp sẵn của Python. .
số
Loại trình tự
Boolean
Từ điển

Danh sách có phải là kiểu dữ liệu được hỗ trợ trong python không?

Danh sách là một trong 4 loại dữ liệu tích hợp sẵn trong Python dùng để lưu trữ các tập hợp dữ liệu, 3 loại còn lại là Tuple, Set và Dictionary, tất cả đều có chất lượng và cách sử dụng khác nhau.