Làm cách nào để tạo chỉ mục kết thúc trong python?

Cách đây vài ngày, tôi đang chuẩn bị trình bày cách lập chỉ mục và cắt danh sách cho một nhóm những người mới bắt đầu sử dụng Python và tôi đã gặp khó khăn với một vài trường hợp sử dụng khá cơ bản. Vì vậy, sau khi tìm hiểu một chút để không bị mắc kẹt, tôi nhận thấy rằng thật đáng để chia sẻ những gì tôi học được

Truy cập các mục trong một danh sách [và trong các lần lặp khác như bộ dữ liệu và chuỗi] là một kỹ năng cơ bản đối với các lập trình viên Python và nhiều công cụ Python tuân theo các quy ước tương tự để lập chỉ mục và cắt [e. g.

my_list[0]'a'
4và
my_list[0]'a'
5]. Vì vậy, nó đáng để làm quen với mọi thứ

Định nghĩa và Thiết lập Giai đoạn

“Lập chỉ mục” có nghĩa là đề cập đến một phần tử của một iterable theo vị trí của nó trong iterable. “Slicing” có nghĩa là lấy một tập con các phần tử từ một iterable dựa trên các chỉ số của chúng

Bằng cách tương tự, gần đây tôi đã được triệu tập để làm nhiệm vụ bồi thẩm đoàn, và họ đã chỉ định cho mỗi bồi thẩm viên tiềm năng một số. Bạn có thể nói số bồi thẩm của tôi là chỉ số của tôi. Khi họ nói, “Bồi thẩm số 42; . Khi họ nói, “Các bồi thẩm viên từ 37 đến 48, vui lòng báo cáo lại lúc 3. 30 giờ chiều,” phần đó của nhóm lớn hơn cùng nhau thở dài và đi ăn trưa

Trước tiên, hãy tạo một danh sách mà chúng ta có thể sử dụng bằng cách sử dụng khả năng hiểu danh sách

my_list = [_ for _ in 'abcdefghi']
my_list
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']
Lập chỉ mục

Để truy xuất một phần tử của danh sách, chúng ta sử dụng toán tử chỉ số [______06]

my_list[0]'a'

Các danh sách là "không được lập chỉ mục", vì vậy,

my_list[0]'a'
7 trả về thứ không [i. e. mục ngoài cùng bên trái] trong danh sách và
my_list[0]'a'
8 trả về mục thứ nhất [i. e. một mục ở bên phải của mục thứ 0]. Vì có 9 phần tử trong danh sách của chúng ta [
my_list[0]'a'
7 đến
  0    1    2    3    4    5    6    7    8
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']
↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
-9 -8 -7 -6 -5 -4 -3 -2 -1
0], cố gắng truy cập
  0    1    2    3    4    5    6    7    8
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']
↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
-9 -8 -7 -6 -5 -4 -3 -2 -1
1 sẽ tạo ra một
  0    1    2    3    4    5    6    7    8
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']
↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
-9 -8 -7 -6 -5 -4 -3 -2 -1
2, vì thực tế nó đang cố lấy phần tử thứ mười và không có phần tử nào

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 đó

  0    1    2    3    4    5    6    7    8
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']
↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
-9 -8 -7 -6 -5 -4 -3 -2 -1
3 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 tìm ra độ dài của iterable theo chương trình để làm việc với các phần tử ở cuối iterable. Các chỉ số và chỉ số đảo ngược của
  0    1    2    3    4    5    6    7    8
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']
↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
-9 -8 -7 -6 -5 -4 -3 -2 -1
4 như sau

  0    1    2    3    4    5    6    7    8
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']
↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
-9 -8 -7 -6 -5 -4 -3 -2 -1
Cắt lát

Một lát cắt là một tập hợp con của các phần tử danh sách. Trong trường hợp danh sách, một lát cắt sẽ luôn có các phần tử liền kề. Ký hiệu lát cắt có dạng

my_list[0]'a'
4

trong đó

  0    1    2    3    4    5    6    7    8
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']
↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
-9 -8 -7 -6 -5 -4 -3 -2 -1
5 là chỉ mục của phần tử đầu tiên bao gồm và
  0    1    2    3    4    5    6    7    8
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']
↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
-9 -8 -7 -6 -5 -4 -3 -2 -1
6 là chỉ mục của phần tử dừng tại đó mà không bao gồm phần tử đó trong lát cắt. Vì vậy,
  0    1    2    3    4    5    6    7    8
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']
↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
-9 -8 -7 -6 -5 -4 -3 -2 -1
7 trả về
  0    1    2    3    4    5    6    7    8
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']
↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
-9 -8 -7 -6 -5 -4 -3 -2 -1
8

my_list[0]'a'
9

Để trống ranh giới của một trong hai lát có nghĩa là bắt đầu từ [hoặc đi đến] cuối danh sách. Ví dụ

my_list = [_ for _ in 'abcdefghi']
my_list
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']
0

Sử dụng bộ chỉ mục phủ định sẽ đặt giới hạn bắt đầu/dừng liên quan đến vị trí của chúng từ cuối danh sách, do đó,

  0    1    2    3    4    5    6    7    8
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']
↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
-9 -8 -7 -6 -5 -4 -3 -2 -1
9 trả về
my_list[0]'a'
40

my_list = [_ for _ in 'abcdefghi']
my_list
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']
3

Lưu ý rằng nếu bạn thử

my_list[0]'a'
41, bạn sẽ nhận được một danh sách trống. Đây là thứ mà tôi đã vấp phải, nhưng đây là những gì đang xảy ra. để được bao gồm trong lát cắt, một phần tử phải ở hoặc bên phải của ranh giới
  0    1    2    3    4    5    6    7    8
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']
↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
-9 -8 -7 -6 -5 -4 -3 -2 -1
5 VÀ bên trái của ranh giới
  0    1    2    3    4    5    6    7    8
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']
↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
-9 -8 -7 -6 -5 -4 -3 -2 -1
6. Bởi vì
my_list[0]'a'
44 đã ở bên phải của
my_list[0]'a'
45, bộ cắt dừng lại trước khi điền bất kỳ giá trị nào vào lát cắt

Vòng lặp

my_list[0]'a'
46 hoạt động giống hệt nhau;

my_list[0]'a'
0Bước

Slicer có thể lấy một đối số thứ ba tùy chọn, đặt khoảng thời gian mà các phần tử được bao gồm trong slice. Vì vậy,

my_list[0]'a'
47 trả về
my_list[0]'a'
48

my_list[0]'a'
3

my_list[0]'a'
49 trả về
my_list[0]'a'
90

my_list[0]'a'
6

Các giá trị bước phủ định đảo ngược hướng mà bộ cắt lát lặp lại qua danh sách ban đầu

my_list[0]'a'
0

Vị trí được lập chỉ mục của các phần tử danh sách không thay đổi, nhưng thứ tự trả về của các phần tử thì không. Ý nghĩa của ranh giới

  0    1    2    3    4    5    6    7    8
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']
↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
-9 -8 -7 -6 -5 -4 -3 -2 -1
5 và
  0    1    2    3    4    5    6    7    8
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']
↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
-9 -8 -7 -6 -5 -4 -3 -2 -1
6 cũng bị đảo ngược, vì vậy giá trị
  0    1    2    3    4    5    6    7    8
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']
↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
-9 -8 -7 -6 -5 -4 -3 -2 -1
5 phải ở vị trí ngoài cùng bên phải trong lát cắt và giá trị
  0    1    2    3    4    5    6    7    8
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']
↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
-9 -8 -7 -6 -5 -4 -3 -2 -1
6 phải ở bên trái của vị trí đó. Vì vậy, ________ 195 mang lại cho chúng tôi ________ 196

my_list[0]'a'
1

Tương tự như vậy,

my_list[0]'a'
97 cho chúng ta
my_list[0]'a'
98

my_list[0]'a'
2

my_list[0]'a'
99 mang lại cho chúng tôi
my_list = [_ for _ in 'abcdefghi']
my_list
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']
00

my_list[0]'a'
3

Tôi hy vọng điều này sẽ giúp bạn tránh được một số nhầm lẫn mà tôi gặp phải khi làm việc thông qua lập chỉ mục và cắt lát, đặc biệt là với các bước phủ định

Làm cách nào để tạo một chỉ mục trong Python?

Đặt chỉ mục bằng phạm vi Python . Trong trường hợp như vậy, chúng ta có thể sử dụng hàm range[] của Python. Chúng ta có thể tạo pandas Index bằng cách sử dụng hàm range[] và chuyển nó vào DataFrame. hàm set_index[] .

[

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ó.

Chỉ mục [] hoạt động như thế nào trong Python?

Phương thức index[] của Python giúp bạn tìm vị trí chỉ mục của một phần tử hoặc một mục trong một chuỗi ký tự hoặc danh sách các mục. It spits out the lowest possible index of the specified element in the list. In case the specified item does not exist in the list, a ValueError is returned.

Chủ Đề