Computer >> Máy Tính >  >> Lập trình >> Python

Mảng - Mảng hiệu quả của các giá trị số trong Python

Mảng là một cấu trúc dữ liệu rất phổ biến trong C / C ++, Java, v.v. Trong các ngôn ngữ này, mảng được định nghĩa là tập hợp của nhiều hơn một phần tử có kiểu dữ liệu tương tự. Python không có bất kỳ mảng tương đương nào được tích hợp sẵn. Đó là Danh sách cũng như Tuple là một tập hợp các phần tử nhưng chúng có thể thuộc các loại khác nhau.

Mô-đun mảng của Python mô phỏng mảng kiểu C. Mô-đun định nghĩa lớp 'mảng'. Hàm tạo sau tạo một đối tượng mảng:

mảng
array(typecode, initializer)

Đối số mã kiểu xác định kiểu của mảng. Bộ khởi tạo phải là một chuỗi có tất cả các phần tử có kiểu phù hợp.

Câu lệnh sau tạo một đối tượng mảng số nguyên:

>>> import array
>>> arr = array.array('i', range(5))
>>> arr
array('i', [0, 1, 2, 3, 4])
>>> type(arr)
<class 'array.array'>
>>> array.typecodes
'bBuhHiIlLqQfd'

Mô-đun mảng xác định thuộc tính typecodes trả về một chuỗi. Mỗi ký tự trong chuỗi đại diện cho một mã loại chỉ ra loại C và loại Python tương đương:

Mã loại Loại C Loại Python
'b' ký tên int
'B' ký tự không dấu int
'u' Py_UNICODE Ký tự Unicode
'h' ký tắt int
'H' rút gọn không dấu int
'i' đã ký int int
'Tôi' int không dấu int
'l' đã ký lâu int
'L' dài không dấu int
'q' đã ký dài int
'Q' dài dài không dấu int
'f' float float
'd' gấp đôi float

Đối số của trình khởi tạo có thể là một đối tượng giống như byte. Ví dụ sau xây dựng một mảng từ biểu diễn byte của chuỗi.

>>> arr1 = array.array('b', b'Hello')
>>> arr1
array('b', [72, 101, 108, 108, 111])

Lớp mảng định nghĩa các phương thức sau:

array.buffer_info ()

Phương thức này trả về một bộ giá trị (địa chỉ, độ dài) cung cấp địa chỉ bộ nhớ hiện tại và độ dài trong các phần tử của bộ đệm được sử dụng để chứa nội dung của mảng.

>>> arr = array.array('i', [0, 1, 2, 3, 4])
>>> arr.buffer_info()
(2201141755144, 5)

count ()

Phương thức này trả về số lần xuất hiện của một phần tử nhất định trong mảng.

>>> arr = array.array('i', [0, 1, 2, 3, 4])
>>> arr.count(2)
1

extension ()

Phương thức này nối các mục từ có thể lặp vào cuối mảng hoặc có thể lặp lại phải có cùng một mã kiểu; nếu không, TypeError sẽ xuất hiện.

>>> arr = array.array('i', [0, 1, 2, 3, 4])
>>> arr1 = array.array('i',[10,20,30])
>>> arr.extend(arr1)
>>> arr
array('i', [0, 1, 2, 3, 4, 10, 20, 30])

fromfile ()

Phương thức này đọc n mục (dưới dạng giá trị máy) từ đối tượng tệp và nối vào một mảng.

Trong ví dụ sau, trước tiên chúng ta mở một tệp ở chế độ ghi nhị phân.

>>> file = open('test.txt','wb')
>>> file.write(b'Hello Python')
12
>>> file.close()

Bây giờ chúng tôi sử dụng tệp này để nối dữ liệu của nó vào đối tượng mảng.

>>> a = array.array('i')
>>> file = open('test.txt','rb')
>>> a.fromfile(file,file.tell())
>>> a
array('i', [1819043144, 2035294319, 1852794996])

append ()

Phương thức này nối một mục mới vào cuối mảng

fromlist ()

Phương thức này nối các mục từ danh sách vào mảng. Điều này tương đương với x trong danh sách:a.append (x)

>>> a = array.array('i')
>>> a.append(10)
>>> a
array('i', [10])
>>> num = [20,30,40,50]
>>> a.fromlist(num)
>>> a
array('i', [10, 20, 30, 40, 50])

insert ()

Chèn một mục mới vào mảng trước vị trí được chỉ định

>>> a = array.array('i', [10, 20, 30, 40, 50])
>>> a.insert(2,25)
>>> a
array('i', [10, 20, 25, 30, 40, 50])

pop ()

Phương thức này trả về mục ở chỉ số nhất định sau khi xóa nó khỏi mảng.

>>> a = array.array('i', [10, 20, 30, 40, 50])
>>> x = a.pop(2)
>>> x
30
>>> a
array('i', [10, 20, 40, 50])

remove ()

Phương thức này xóa lần xuất hiện đầu tiên của mục đã cho khỏi mảng.

>>> a = array.array('i', [10, 20, 30, 40, 50])
>>> a.remove(30)
>>> a
array('i', [10, 20, 40, 50])

tofile ()

Phương thức này ghi tất cả các mục vào đối tượng tệp khi đã bật quyền ghi.

>>> a = array.array('i', [10, 20, 30, 40, 50])
>>> file = open("test.txt","wb")
>>> a.tofile(file)
>>> file.close()
>>> file = open("test.txt","rb")
>>> file.read()
b'\n\x00\x00\x00\x14\x00\x00\x00\x1e\x00\x00\x00(\x00\x00\x002\x00\x00\x00'