Python có lập chỉ mục dựa trên thứ 1 không?

đánh số dựa trên 1 là ý tưởng tính toán của việc lập chỉ mục cấu trúc dữ liệu có thứ tự (e. g. , một chuỗi hoặc mảng) bằng cách bắt đầu bằng 1 thay vì 0. Ví dụ: nếu$s$là chuỗi "ACGT", thì$s[1]$được ký hiệu 'A' và$s[2]$là 'C'

Theo mặc định, các sự cố trong Pháo đài tin sinh học của Rosalind sẽ sử dụng cách đánh số dựa trên 1 thay vì cách đánh số dựa trên 0, được Python sử dụng

Lập chỉ mục rất quan trọng vì nó cho phép chúng ta gọi một phần của cấu trúc dữ liệu khá dễ dàng để làm việc với các thành phần bên trong cấu trúc một cách riêng lẻ. Tất nhiên, đây là một điều rất quan trọng cần thành thạo đối với Khoa học dữ liệu, vì có lẽ Nhà khoa học dữ liệu sẽ làm việc với các cấu trúc dữ liệu khá thường xuyên.

Sổ tay

Các loại lập chỉ mục

Trước khi bắt tay vào làm việc với các chỉ mục, chúng ta hãy xem những loại nào thực sự có thể được lập chỉ mục. Trong ngôn ngữ lập trình Python, các loại có thể được quy cho khả năng được lập chỉ mục bằng cách sử dụng phương thức __getitem__() trong một lớp nhất định. Điều này có nghĩa là chúng ta có thể áp dụng phương pháp lập chỉ mục cho bất kỳ loại nào bằng cách thêm phương thức này với kết quả trả về chính xác. Để thử điều này, trước tiên chúng ta sẽ tạo một lớp. Xem xét ví dụ sau

class Winners:    def __init__(self, first, second, third):         self.first, self.second = first, second         self.third = third

Bây giờ chúng ta có thể thêm phương thức __getitem__() vào lớp mới này. Điều này sẽ thêm khả năng dễ dàng đưa các vị trí của chúng tôi ra khỏi lớp bằng cách sử dụng các chỉ mục đơn giản

def __getitem__(self, x):

Đối với ví dụ này, tôi nghĩ phương pháp tấn công tốt nhất là tạo một từ điển khi khởi tạo hàm tạo của lớp này. Với phương pháp này, chúng tôi sẽ có thể chỉ cần gọi các chỉ mục của từ điển dựa trên các số để nhận các vị trí cho cuộc đua này

class Winners:    def __init__(self, first, second, third):        self.first, self.second = first, second         self.third = third        self.index = dict({1 : self.first, 2 : self.second,                           3 : self.third})

Bây giờ, cuối cùng, chúng ta sẽ kết thúc phương thức __getitem__() của mình bằng cách gọi khóa từ điển với số được cung cấp

class Winners:     def __init__(self, first, second, third):            self.first, self.second = first, second            self.third = third            self.index = dict({1 : self.first, 2 : self.second,                             3 : self.third})    def __getitem__(self, x):        return(self.index[x])

Mặc dù điều này chắc chắn là tốt, nhưng hãy nhớ rằng chúng tôi chỉ đăng nhập những người chiến thắng ở đây, vì vậy bất kỳ ai vượt quá điểm 4 đều không được đưa vào lớp này. Lưu ý rằng, nếu chúng ta gọi chỉ số 4 trên lớp này, chúng ta sẽ nhận lại được KeyError. Bất cứ khi nào chúng tôi tạo phần mềm, đặc biệt là trong các lớp mà người dùng phần mềm của chúng tôi có thể sẽ không bao giờ nhìn vào, chúng tôi sẽ muốn thực hiện các lỗi để làm cho lỗi rõ ràng hơn một chút. Lưu ý rằng, chúng tôi sẽ thêm một lần thử và nắm bắt vào phương pháp này để in ra một lỗi chi tiết hơn. Kết quả cuối cùng trông giống như thế này

class Winners:    def __init__(self, first, second, third):        self.first, self.second = first, second        self.third = third        self.index = dict({1 : self.first, 2 : self.second,                           3 : self.third})    def __getitem__(self, x):        try:             return(self.index[x])        except KeyError:             print("""KeyError!\nOnly keys 1-3 are stored in this                 class!""")

Bây giờ chúng ta hãy thử và lập chỉ mục loại này. Tất nhiên, trước tiên chúng ta sẽ cần khởi tạo một phiên bản mới của đối tượng này, sau đó chúng ta sẽ lập chỉ mục cho nó. Điều này được thực hiện với cú pháp []

race_winners = Winners("Nancy", "Bobby", "Reagan")

Trước tiên, chúng ta hãy thử lập chỉ mục với 4 để xem chúng ta nhận được loại lợi nhuận nào

race_winners[4]KeyError!
Only keys 1-3 are stored in this class!

Và bây giờ chúng ta sẽ in 1. 3 trong các chỉ mục của lớp này

print(race_winners[1])print(race_winners[2])print(race_winners[3])Nancy
Bobby
Reagan

Các loại có thể lập chỉ mục trong Python

Ngôn ngữ lập trình Python đi kèm với một số kiểu dữ liệu và cấu trúc dữ liệu có thể được lập chỉ mục ngay lập tức. Điều đầu tiên mà chúng ta sẽ xem xét trong bài viết này là cấu trúc dữ liệu từ điển

________số 8

Chúng ta có thể lập chỉ mục từ điển bằng cách sử dụng khóa từ điển tương ứng. Điều này sẽ cung cấp cho chúng tôi cặp giá trị cho khóa đã cho này. Thuận tiện sẽ cung cấp cho chúng ta cấu trúc dữ liệu tiếp theo, danh sách

lst = dct["A"]

Một danh sách có thể được lập chỉ mục với vị trí của phần tử chúng tôi muốn truy cập. Ví dụ: phần tử thứ hai trong danh sách lst mới của chúng tôi là mười. Chúng ta có thể gọi mười này bằng cách sử dụng

def __getitem__(self, x):
0

Tất nhiên, đây là một, không phải hai, vì các chỉ mục bắt đầu từ 0 trong Python. Không cần phải nói, với các chỉ mục danh sách chắc chắn có ích. Một loại khác chúng ta có thể lập chỉ mục là một chuỗi

def __getitem__(self, x):
1Đặt chỉ mục

Cũng quan trọng như việc gọi các chỉ mục là thiết lập các chỉ mục. Đặt chỉ mục cho phép chúng tôi không chỉ tạo các vị trí mới trên danh sách và các cấu trúc dữ liệu có thể lặp lại khác mà còn thay đổi các giá trị hiện có bên trong cấu trúc dữ liệu. Ngoài ra, chúng ta có thể đẩy các phím vào từ điển, thêm cột vào khung dữ liệu Pandas và hơn thế nữa bằng phương pháp này. Trong Python, cài đặt chỉ mục gọi phương thức __setitem__(). Hãy để chúng tôi tiếp tục và viết một chức năng cho việc này

def __getitem__(self, x):
2

Bây giờ chúng ta sẽ viết một chút logic vào hàm mới này, cho phép nó đặt giá trị của khóa từ điển tương ứng thành giá trị đầu vào mới của chúng ta

def __getitem__(self, x):
3

Giờ đây, chúng tôi có thể đặt chỉ số cho các vị trí cuộc đua của mình thành các giá trị mới

def __getitem__(self, x):
4

Tất nhiên, khái niệm chính xác này áp dụng cho tất cả các cấu trúc dữ liệu trong Python. Chúng ta có thể áp dụng điều này cho danh sách, giá trị từ điển, nhưng KHÔNG phải chuỗi như sau

def __getitem__(self, x):
5Chức năng quan trọng

Bây giờ chúng ta đã hiểu những điều cơ bản về lập chỉ mục, chúng ta hãy xem xét một chút về một số chức năng quan trọng mà chúng ta có thể muốn sử dụng khi làm việc với cấu trúc dữ liệu. Nhiều chức năng trong số này cực kỳ hữu ích để làm việc với lượng dữ liệu phong phú. Cần lưu ý rằng chúng chủ yếu dành cho danh sách và ma trận, mặc dù một số hàm có thể hoạt động trên các cấu trúc khác. Đây sẽ là danh sách chúng ta sẽ làm việc với các chức năng này

def __getitem__(self, x):
6

1. chèn()

Chức năng hữu ích đầu tiên là chèn. Chèn sẽ cho phép bạn đặt bất kỳ giá trị nào tại bất kỳ chỉ mục nào trong một mảng. Điều này có thể hữu ích nếu bạn muốn một mảng cụ thể chứa một thành phần cụ thể ở một vị trí. Nó rất dễ sử dụng, chỉ cần thêm hai đối số, vị trí và sau đó là giá trị mà bạn muốn thêm

def __getitem__(self, x):
7

2. nối thêm ()

Chức năng tiếp theo là chức năng chắp thêm. Hàm này được sử dụng rất thường xuyên để tạo danh sách, thường là lặp lại. Điều này sẽ thêm một giá trị vào chỉ mục có sẵn tiếp theo và chỉ yêu cầu một giá trị duy nhất làm đối số

def __getitem__(self, x):
8

Mặc dù phương pháp tốt hơn cho trường hợp cụ thể này có thể là lambda với ánh xạ hoặc có thể là phương thức áp dụng nếu đây là loại chuỗi, trong trường hợp này, tôi sẽ sử dụng vòng lặp lặp và chức năng nối thêm để chứng minh cách sử dụng nó trong trường hợp này

def __getitem__(self, x):
9

3. gỡ bỏ()

Xóa sẽ xóa một giá trị khỏi danh sách đã cho. Lưu ý rằng điều này có một giá trị, không phải là một chỉ số. Nó cũng sẽ chỉ xóa một phiên bản của giá trị đã cho

class Winners:    def __init__(self, first, second, third):        self.first, self.second = first, second         self.third = third        self.index = dict({1 : self.first, 2 : self.second,                           3 : self.third})
0

4. gia hạn()

Hàm mở rộng về cơ bản chỉ là phương thức append(), nhưng cho phép chúng ta thêm một danh sách vào cuối danh sách của mình

class Winners:    def __init__(self, first, second, third):        self.first, self.second = first, second         self.third = third        self.index = dict({1 : self.first, 2 : self.second,                           3 : self.third})
1

5. đếm()

Đếm sẽ trả về một số nguyên là số đếm của tất cả các trường hợp của một phần tử trong một danh sách nhất định

class Winners:    def __init__(self, first, second, third):        self.first, self.second = first, second         self.third = third        self.index = dict({1 : self.first, 2 : self.second,                           3 : self.third})
2

Một ví dụ tuyệt vời về trường hợp sử dụng cho chức năng này là tính toán chế độ. Quan sát cách tôi sử dụng bộ đếm và từ điển để lấy chế độ trong vòng lặp

class Winners:    def __init__(self, first, second, third):        self.first, self.second = first, second         self.third = third        self.index = dict({1 : self.first, 2 : self.second,                           3 : self.third})
3

6. loại()

Hàm danh sách quan trọng cuối cùng mà tôi muốn thảo luận là hàm sort(). Hàm này không nhận tham số và sẽ sắp xếp danh sách theo logic hoặc theo chỉ định với các đối số từ khóa. Trong ví dụ sau, tôi sử dụng sắp xếp để tìm trung vị của danh sách của chúng tôi

class Winners:    def __init__(self, first, second, third):        self.first, self.second = first, second         self.third = third        self.index = dict({1 : self.first, 2 : self.second,                           3 : self.third})
4

Phần kết luận

Không cần phải nói, lập chỉ mục là một điều quan trọng cần biết rõ khi viết về bất kỳ mã nào liên quan đến dữ liệu. Các chức năng tiêu chuẩn của lớp danh sách cũng có thể rất hữu ích để thao tác, tạo và nhận thông tin chi tiết từ dữ liệu. Tôi nghĩ đây là tất cả những gì mọi người có thể muốn biết về lập chỉ mục trong Python. Cảm ơn bạn rất nhiều vì đã đọc, và tôi hy vọng bạn có một ngày hay đêm tuyệt vời

Danh sách Python có được lập chỉ mục 1 không?

danh sách python được lập chỉ mục 0 . Vì vậy, phần tử đầu tiên là 0, thứ hai là 1, v.v. Vì vậy, nếu có n phần tử trong danh sách, phần tử cuối cùng là n-1. Nhớ điều này.

làm gì

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

Lập chỉ mục mảng có bắt đầu từ 1 trong Python không?

Bạn có thể truy cập một phần tử mảng bằng cách tham khảo số chỉ mục của nó. Các chỉ mục trong mảng NumPy bắt đầu bằng 0 , nghĩa là phần tử đầu tiên có chỉ số 0 và phần tử thứ hai có chỉ số 1, v.v.

danh sách là gì [

[-1] có nghĩa là phần tử cuối cùng trong một chuỗi , trong trường hợp này là danh sách các bộ như (phần tử, số .