Ký hiệu khung danh sách Python

Vào cuối bài học trước, chúng tôi nhận thấy rằng

1
True
['word', 123]
3 đã cung cấp cho chúng tôi một cấu trúc dữ liệu mới. một danh sách. Danh sách là một tập hợp các đối tượng được bao quanh bởi một tập hợp các dấu ngoặc vuông [
1
True
['word', 123]
4]

example = [1, 2, 4, 5]
example

[1, 2, 4, 5]

Lưu ý rằng một danh sách có thể chứa bất kỳ loại mục nào, kể cả các danh sách khác

example = [1, True, None, ["word", 123], "test"]
example

[1, True, None, ['word', 123], 'test']

Chúng tôi có thể nhận được các phần khác nhau của danh sách thông qua lập chỉ mục. Chúng tôi thêm một bộ dấu ngoặc vuông sau danh sách được đề cập cùng với chỉ mục của các giá trị mà chúng tôi muốn. Lưu ý rằng trong Python, tất cả các chỉ số bắt đầu từ 0 — phần tử đầu tiên thực sự là phần tử thứ 0 [điều này khác với các ngôn ngữ như R hoặc MATLAB]. Cách tốt nhất để nghĩ về các chỉ số mảng là chúng là số phần bù từ vị trí đầu tiên — phần tử đầu tiên không yêu cầu phần bù để đến

Nguồn. xkcd #163

Một vài ví dụ về điều này trong hành động

# first element
example[0]
# second element
example[1]
# fetch the list inside the list
example[3]

1
True
['word', 123]

Lưu ý rằng chúng ta có thể lập chỉ mục một phạm vi bằng cách sử dụng toán tử dấu hai chấm [

1
True
['word', 123]
5]. Bản thân dấu hai chấm có nghĩa là lấy mọi thứ

example[:]

[1, True, None, ['word', 123], 'test']

Dấu hai chấm ở bên phải của chỉ mục có nghĩa là mọi thứ sau chỉ mục đã chỉ định

1
True
['word', 123]
1

1
True
['word', 123]
2

Dấu hai chấm ở bên trái của chỉ mục có nghĩa là mọi thứ trước đó, nhưng không bao gồm, chỉ mục

[1, 2, 4, 5]
0

[1, 2, 4, 5]
1

Và nếu chúng ta sử dụng chỉ số âm, điều đó có nghĩa là lấy các phần tử từ cuối, đi ngược lại

[1, 2, 4, 5]
2

[1, 2, 4, 5]
3

Lưu ý rằng chúng ta có thể sử dụng chỉ mục nhiều lần để lấy thông tin từ các đối tượng lồng nhau

[1, 2, 4, 5]
4

[1, 2, 4, 5]
5

Nếu chúng tôi lập chỉ mục ngoài phạm vi, đó là một lỗi

[1, 2, 4, 5]
6

[1, 2, 4, 5]
7

Chúng ta cũng có thể cộng hai danh sách lại với nhau để tạo danh sách lớn hơn

[1, 2, 4, 5]
8

[1, 2, 4, 5]
9

Danh sách dưới dạng đối tượng

Giống như các đối tượng khác trong Python, danh sách có một hành vi độc đáo có thể khiến nhiều người mất cảnh giác. Điều gì xảy ra khi chúng ta chạy đoạn mã sau?

example = [1, True, None, ["word", 123], "test"]
example
0

example = [1, True, None, ["word", 123], "test"]
example
1

Sửa đổi

1
True
['word', 123]
6 cũng thực sự sửa đổi
1
True
['word', 123]
7. Trong Python, danh sách là đối tượng. Các đối tượng không được sao chép khi chúng ta gán chúng cho một giá trị mới [như trong R]. Đây là một tối ưu hóa quan trọng, vì chúng tôi sẽ không vô tình lấp đầy tất cả bộ nhớ của máy tính bằng cách đổi tên một biến một vài lần. Khi chúng tôi chạy
1
True
['word', 123]
8, nó chỉ tạo một tên mới cho
1
True
['word', 123]
7.
1
True
['word', 123]
7 vẫn chỉ vào cùng một đối tượng bên dưới

Chúng ta có thể xác minh điều này bằng hàm

example[:]
1.
example[:]
1 in mã định danh duy nhất của đối tượng. Hai đối tượng sẽ không có cùng ID trừ khi chúng là cùng một đối tượng

example = [1, True, None, ["word", 123], "test"]
example
2

example = [1, True, None, ["word", 123], "test"]
example
3

Để tạo

1
True
['word', 123]
6 như một bản sao duy nhất của
1
True
['word', 123]
7. Chúng ta phải sử dụng phương pháp
example[:]
5

example = [1, True, None, ["word", 123], "test"]
example
4

example = [1, True, None, ["word", 123], "test"]
example
5

example[:]
5 là một phương pháp. Các phương thức là các chức năng đặc biệt được liên kết với một đối tượng và xác định những gì nó có thể làm. Chúng luôn tuân theo cú pháp
example[:]
7 và có số lượng đối số được xác định trước chủ yếu với các giá trị mặc định. Chúng tôi cũng có thể chỉ định một tập hợp con của các đối số, e. g.
example[:]
8

Các phương pháp danh sách thường được sử dụng khác bao gồm

example[:]
9

example = [1, True, None, ["word", 123], "test"]
example
6

example = [1, True, None, ["word", 123], "test"]
example
7

example = [1, True, None, ["word", 123], "test"]
example
8

example = [1, True, None, ["word", 123], "test"]
example
9

[1, True, None, ['word', 123], 'test']
0 [kết hợp hai danh sách, thay vì thêm danh sách thứ hai làm phần tử]

[1, True, None, ['word', 123], 'test']
0

[1, True, None, ['word', 123], 'test']
1

Và tất nhiên,

[1, True, None, ['word', 123], 'test']
1 và
[1, True, None, ['word', 123], 'test']
2 [cả hai đều làm chính xác những gì bạn nghĩ họ nên làm]

[1, True, None, ['word', 123], 'test']
2

[1, True, None, ['word', 123], 'test']
3

Thay đổi kích thước động của danh sách

Danh sách của Python là một cấu trúc dữ liệu cực kỳ tối ưu hóa. Không giống như các vectơ của R, không có thời gian phạt để liên tục thêm các phần tử vào danh sách. Bạn không bao giờ cần phân bổ trước danh sách ở một kích thước nhất định vì lý do hiệu suất

Lặp qua danh sách

Chúng tôi sẽ rất thường xuyên muốn lặp lại các danh sách và thực hiện một thao tác với mọi phần tử. Chúng tôi làm điều này bằng cách sử dụng vòng lặp for

Một vòng lặp for thường trông giống như sau

[1, True, None, ['word', 123], 'test']
4

Một ví dụ về vòng lặp for thực sự hoạt động được hiển thị bên dưới

[1, True, None, ['word', 123], 'test']
5

[1, True, None, ['word', 123], 'test']
6

Trong trường hợp này, chúng tôi đang lặp lại các giá trị được cung cấp bởi

[1, True, None, ['word', 123], 'test']
3.
[1, True, None, ['word', 123], 'test']
3 là một hàm tạo đặc biệt mà chúng ta có thể sử dụng để cung cấp một chuỗi số

Chúng tôi cũng có thể lặp qua một danh sách hoặc bất kỳ tập hợp các phần tử nào

[1, True, None, ['word', 123], 'test']
7

[1, True, None, ['word', 123], 'test']
8

Các hoạt động được vector hóa với Numpy

Numpy là một thư viện số được thiết kế để làm việc với các số dễ dàng hơn so với cách khác

Ví dụ: giả sử chúng tôi có một danh sách hàng nghìn số. Không có cách nào để làm toán vectơ mà không lặp qua tất cả các phần tử

[1, True, None, ['word', 123], 'test']
9

# first element
example[0]
# second element
example[1]
# fetch the list inside the list
example[3]
0

đó là rất nhiều việc. Numpy cho phép chúng tôi thực hiện các phép toán vectơ như trong R, giúp chúng tôi tiết kiệm rất nhiều công sức. Hàm cơ bản nhất là

[1, True, None, ['word', 123], 'test']
5 tạo một mảng số từ danh sách. Một mảng numpy là một tập hợp các số có thể có bất kỳ số thứ nguyên nào. Trong trường hợp này, chỉ có một chiều, vì chúng ta đã tạo mảng từ danh sách

# first element
example[0]
# second element
example[1]
# fetch the list inside the list
example[3]
1

# first element
example[0]
# second element
example[1]
# fetch the list inside the list
example[3]
2

Một điều rất hay về Numpy là nó hoạt động hiệu quả hơn nhiều so với các danh sách Python thông thường. Một thủ thuật hay mà chúng ta có thể sử dụng với IPython để đo thời gian thực hiện là hàm ma thuật

[1, True, None, ['word', 123], 'test']
6. Bất cứ thứ gì sau
[1, True, None, ['word', 123], 'test']
6 đều được đo tốc độ. Thêm
[1, True, None, ['word', 123], 'test']
8 vào lệnh
[1, True, None, ['word', 123], 'test']
9 thay vì
1
True
['word', 123]
10 có nghĩa là
[1, True, None, ['word', 123], 'test']
9 được chạy trên toàn bộ ô, không chỉ một dòng. Lưu ý rằng
1
True
['word', 123]
12 phải nằm trên dòng đầu tiên của ô IPython/Jupyter để nó hoạt động, trong khi lệnh
[1, True, None, ['word', 123], 'test']
6 có thể được sử dụng ở mọi nơi

Sử dụng danh sách của Python

# first element
example[0]
# second element
example[1]
# fetch the list inside the list
example[3]
3

# first element
example[0]
# second element
example[1]
# fetch the list inside the list
example[3]
4

sử dụng numpy

# first element
example[0]
# second element
example[1]
# fetch the list inside the list
example[3]
5

# first element
example[0]
# second element
example[1]
# fetch the list inside the list
example[3]
6

Numpy nhanh hơn khoảng 100 lần, đến _______ 56 đã đề cập rằng Numpy có thể gian lận một chút. Tuy nhiên, ngay cả trong trường hợp xấu nhất của Numpy, nó vẫn chạy nhanh hơn gấp 5 lần so với sử dụng danh sách cơ bản của Python

Làm việc với nhiều chiều

Đôi khi, bạn sẽ gặp một tập dữ liệu có nhiều thứ nguyên và sẽ cần có khả năng truy xuất các phần tử từ tập dữ liệu đó như vậy

# first element
example[0]
# second element
example[1]
# fetch the list inside the list
example[3]
7

# first element
example[0]
# second element
example[1]
# fetch the list inside the list
example[3]
8

Trong trường hợp này, chúng ta phải lập chỉ mục bằng cách sử dụng nhiều chỉ mục, được phân tách bằng dấu phẩy

Để lấy phần tử đầu tiên, chúng tôi sẽ sử dụng

1
True
['word', 123]
15

# first element
example[0]
# second element
example[1]
# fetch the list inside the list
example[3]
9

1
True
['word', 123]
0

Chỉ mục đầu tiên tương ứng với hàng, chỉ mục thứ hai tương ứng với cột và chỉ mục thứ ba tương ứng với kích thước tiếp theo…

[

Python cũng cho phép bạn lập chỉ mục từ cuối danh sách bằng cách sử dụng số âm, trong đó [-1] trả về phần tử cuối cùng . Điều này cực kỳ hữu ích vì nó có nghĩa là bạn không cần phải lập trình tìm ra độ dài của lần lặp để làm việc với các phần tử ở cuối nó.

Loại dấu ngoặc nào cho danh sách trong Python?

Trong Python, danh sách là tập hợp các mục được sắp xếp theo thứ tự cho phép dễ dàng sử dụng một tập hợp dữ liệu. Giá trị danh sách được đặt ở giữa dấu ngoặc vuông [ ] , được phân tách bằng dấu phẩy. Bạn nên đặt dấu cách giữa dấu phẩy và giá trị tiếp theo.

ý nghĩa của danh sách [. trong Python?

Bộ sưu tập Python [Mảng] . Danh sách là bộ sưu tập được sắp xếp theo thứ tự và có thể thay đổi . Cho phép các thành viên trùng lặp. Tuple là một bộ sưu tập được sắp xếp và không thể thay đổi. Cho phép các thành viên trùng lặp.

Dấu ngoặc {} có nghĩa là gì trong Python?

[] dấu ngoặc đơn được sử dụng cho thứ tự thực hiện hoặc thứ tự đánh giá và được gọi là bộ dữ liệu. Dấu ngoặc [] được sử dụng cho danh sách. Nội dung danh sách có thể được thay đổi, không giống như nội dung tuple. {} được dùng để định nghĩa một từ điển trong một "danh sách" được gọi là chữ .

Chủ Đề