Trước tiên hãy xem xét các trường hợp sử dụng. Có lẽ các trường hợp sử dụng phổ biến nhất để cắt là "lấy n mục đầu tiên" và "lấy n mục tiếp theo bắt đầu từ i" [trường hợp đầu tiên là trường hợp đặc biệt cho i == chỉ mục đầu tiên]. Sẽ thật tuyệt nếu cả hai điều này có thể được thể hiện mà không có phần bù +1 hoặc -1 khó xử
Sử dụng lập chỉ mục dựa trên 0, khoảng thời gian nửa mở và giá trị mặc định phù hợp [như Python cuối cùng đã có], chúng rất đẹp. Một[. n] và a[i. i+n]; . N]
Sử dụng lập chỉ mục dựa trên 1, nếu bạn muốn [. n] có nghĩa là n phần tử đầu tiên, bạn phải sử dụng các khoảng đóng hoặc bạn có thể sử dụng ký hiệu lát cắt sử dụng bắt đầu và độ dài làm tham số lát cắt. Sử dụng các khoảng thời gian nửa mở không đẹp lắm khi kết hợp với lập chỉ mục dựa trên 1. Sử dụng các khoảng đóng, bạn phải viết a[i. i+n-1] cho n mục bắt đầu từ i. Vì vậy, có lẽ sử dụng chiều dài lát cắt sẽ thanh lịch hơn với lập chỉ mục dựa trên 1? . N]. Và đây thực tế là những gì ABC đã làm -- nó sử dụng một ký hiệu khác để bạn có thể viết a@i. n. [Xem http. //trang chủ. cwi. nl/~steven/abc/qr. html#EXPRESSIONS. ]
Nhưng làm thế nào để chỉ mục. quy ước độ dài phù hợp với các trường hợp sử dụng khác? . Đặc biệt là bất biến khi hai lát liền kề nhau, chỉ số kết thúc của lát đầu tiên là chỉ số bắt đầu của lát thứ hai, quá đẹp để bỏ qua. Ví dụ: giả sử bạn chia một chuỗi thành ba phần tại các chỉ số i và j -- các phần đó sẽ là a[. tôi], một [tôi. j] và a[j. ]
Vì vậy, đó là lý do tại sao Python sử dụng lập chỉ mục dựa trên 0
Trong bài học này, bạn sẽ thấy cách truy cập các phần tử riêng lẻ và chuỗi các đối tượng trong danh sách của mình. Các phần tử danh sách có thể được truy cập bằng cách sử dụng một chỉ mục số trong ngoặc vuông
>>>
>>> mylist[m]
Đây là kỹ thuật tương tự được sử dụng để truy cập các ký tự riêng lẻ trong một chuỗi. Lập chỉ mục danh sách cũng dựa trên số không
>>>
>>> a = ['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']
>>> a
['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']
>>> a[0]
'spam'
>>> a[2]
'bacon'
>>> a[5]
'lobster'
>>> a[len[a]-1]
'lobster'
>>> a[6]
Traceback [most recent call last]:
File "", line 1, in
a[6]
IndexError: list index out of range
Các phần tử danh sách cũng có thể được truy cập bằng cách sử dụng chỉ mục danh sách phủ định, được tính từ cuối danh sách
>>>
>>> a = ['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']
>>> a[-1]
'lobster'
>>> a[-2]
'ham'
>>> a[-5]
'egg'
>>> a[-6]
'spam'
>>> a[-len[a]]
'spam'
>>> a[-8]
Traceback [most recent call last]:
File "", line 1, in
a[-8]
IndexError: list index out of range
Cắt lát là cú pháp lập chỉ mục trích xuất một phần từ danh sách. Nếu
>>> a = ['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']
>>> a
['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']
>>> a[0]
'spam'
>>> a[2]
'bacon'
>>> a[5]
'lobster'
>>> a[len[a]-1]
'lobster'
>>> a[6]
Traceback [most recent call last]:
File "", line 1, in
a[6]
IndexError: list index out of range
9 là một danh sách, thì >>> a = ['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']
>>> a[-1]
'lobster'
>>> a[-2]
'ham'
>>> a[-5]
'egg'
>>> a[-6]
'spam'
>>> a[-len[a]]
'spam'
>>> a[-8]
Traceback [most recent call last]:
File "", line 1, in
a[-8]
IndexError: list index out of range
0 trả về phần của >>> a = ['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']
>>> a
['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']
>>> a[0]
'spam'
>>> a[2]
'bacon'
>>> a[5]
'lobster'
>>> a[len[a]-1]
'lobster'
>>> a[6]
Traceback [most recent call last]:
File "", line 1, in
a[6]
IndexError: list index out of range
9- Bắt đầu với tư thế
2>>> a = ['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster'] >>> a[-1] 'lobster' >>> a[-2] 'ham' >>> a[-5] 'egg' >>> a[-6] 'spam' >>> a[-len[a]] 'spam' >>> a[-8] Traceback [most recent call last]: File "", line 1, in a[-8] IndexError: list index out of range
- Tối đa nhưng không bao gồm
3>>> a = ['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster'] >>> a[-1] 'lobster' >>> a[-2] 'ham' >>> a[-5] 'egg' >>> a[-6] 'spam' >>> a[-len[a]] 'spam' >>> a[-8] Traceback [most recent call last]: File "", line 1, in a[-8] IndexError: list index out of range
- Lập chỉ mục tiêu cực cũng có thể được sử dụng
Đây là một ví dụ
>>>
>>> a = ['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']
>>> a[2:5]
['bacon', 'tomato', 'ham']
>>> a[-5:-2]
['egg', 'bacon', 'tomato']
>>> a[1:4]
['egg', 'bacon', 'tomato']
>>> a[-5:-2] == a[1:4]
True
Bỏ qua chỉ mục đầu tiên và/hoặc cuối cùng
- Bỏ qua chỉ mục đầu tiên
4 bắt đầu lát cắt ở đầu danh sách>>> a = ['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster'] >>> a[-1] 'lobster' >>> a[-2] 'ham' >>> a[-5] 'egg' >>> a[-6] 'spam' >>> a[-len[a]] 'spam' >>> a[-8] Traceback [most recent call last]: File "", line 1, in a[-8] IndexError: list index out of range
- Việc bỏ qua chỉ mục cuối cùng
5 sẽ mở rộng lát cắt từ chỉ mục đầu tiên>>> a = ['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster'] >>> a[-1] 'lobster' >>> a[-2] 'ham' >>> a[-5] 'egg' >>> a[-6] 'spam' >>> a[-len[a]] 'spam' >>> a[-8] Traceback [most recent call last]: File "", line 1, in a[-8] IndexError: list index out of range
2 đến cuối danh sách>>> a = ['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster'] >>> a[-1] 'lobster' >>> a[-2] 'ham' >>> a[-5] 'egg' >>> a[-6] 'spam' >>> a[-len[a]] 'spam' >>> a[-8] Traceback [most recent call last]: File "", line 1, in a[-8] IndexError: list index out of range
- Bỏ qua cả hai chỉ mục
7 trả về một bản sao của toàn bộ danh sách, nhưng không giống như một chuỗi, đó là một bản sao, không phải là một tham chiếu đến cùng một đối tượng>>> a = ['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster'] >>> a[-1] 'lobster' >>> a[-2] 'ham' >>> a[-5] 'egg' >>> a[-6] 'spam' >>> a[-len[a]] 'spam' >>> a[-8] Traceback [most recent call last]: File "", line 1, in a[-8] IndexError: list index out of range
Đây là một ví dụ
>>>
>>> a
['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']
>>> a[:4]
['spam', 'egg', 'bacon', 'tomato']
>>> a[0:4]
['spam', 'egg', 'bacon', 'tomato']
>>> a[2:]
['bacon', 'tomato', 'ham', 'lobster']
>>> a[2:len[a]]
['bacon', 'tomato', 'ham', 'lobster']
>>> a
['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']
>>> a[:]
['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']
>>> a == a[:]
True
>>> a is a[:]
False
>>> s = 'mybacon'
>>> s[:]
'mybacon'
>>> s == s[:]
True
>>> s is s[:]
True
Một bước tiến có thể được thêm vào ký hiệu lát cắt của bạn. Sử dụng một
>>> a = ['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']
>>> a[-1]
'lobster'
>>> a[-2]
'ham'
>>> a[-5]
'egg'
>>> a[-6]
'spam'
>>> a[-len[a]]
'spam'
>>> a[-8]
Traceback [most recent call last]:
File "", line 1, in
a[-8]
IndexError: list index out of range
8 bổ sung và một chỉ số thứ ba chỉ định một sải chân [còn gọi là một bước] trong ký hiệu lát cắt của bạn. Sải bước có thể là tích cực hoặc tiêu cực>>>
>>> a
['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']
>>> a[0:6:2]
['spam', 'bacon', 'ham']
>>> a[1:6:2]
['egg', 'tomato', 'lobster']
>>> a[6:0:-2]
['lobster', 'tomato', 'egg']
>>> a
['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']
>>> a[::-1]
['lobster', 'ham', 'tomato', 'bacon', 'egg', 'spam']
JulianV trên
Đẹp
Orlando Uribe trên
Cảm ơn vì tài liệu này. Tôi đoán có một lỗi đánh máy [??] trong một trong những ví dụ được viết theo bước tiến [ví dụ video là OK]
lỗi đánh máy
>>> a[0:6:-2]
['lobster', 'tomato, 'egg']
phát biểu đúng phải là
>>> a[6:0:-2]
['lobster', 'tomato, 'egg']
nếu không thì,
>>> a[0:6:-2]
[]
Chris Bailey Nhóm RP trên
Xin chào @Orlando Uribe, Bạn nói đúng, tôi sẽ thay đổi nó để phù hợp với bài học trong video. Cảm ơn
Ajay trên
@chris Video rất nhiều thông tin, cảm ơn vì điều này. Khi tôi đang thực hành các ví dụ, có một nghi ngờ
In [43]: a = [9, 1, 2, 4, 5, 6, 8]
In [44]: a[6:0:-2]
Out[44]: [8, 5, 2]
Với sải chân âm tại sao không bao gồm 9
Nó có loại trừ giá trị cuối cùng không?
Chris Bailey Nhóm RP trên
Xin chào @Ajay,
Cảm ơn đã xem khóa học. Lát bạn đã tạo sẽ bắt đầu ở chỉ mục 6 và kết thúc ở chỉ mục 1 và không bao gồm chỉ mục 0, đó là lý do tại sao bạn không nhận được chỉ mục 0 trên 9. Nếu bạn đã sử dụng
>>> a = ['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']
>>> a
['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']
>>> a[0]
'spam'
>>> a[2]
'bacon'
>>> a[5]
'lobster'
>>> a[len[a]-1]
'lobster'
>>> a[6]
Traceback [most recent call last]:
File "", line 1, in
a[6]
IndexError: list index out of range
0Điều đó sẽ bao gồm chỉ số 0. Tôi hy vọng điều này sẽ giúp giải thích những gì đang xảy ra. Dẫn lại từ văn bản dưới bài học
Cắt lát là cú pháp lập chỉ mục trích xuất một phần từ danh sách. Nếu
9 là một danh sách, thì>>> a = ['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster'] >>> a ['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster'] >>> a[0] 'spam' >>> a[2] 'bacon' >>> a[5] 'lobster' >>> a[len[a]-1] 'lobster' >>> a[6] Traceback [most recent call last]: File "", line 1, in a[6] IndexError: list index out of range
0 trả về phần của>>> a = ['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster'] >>> a[-1] 'lobster' >>> a[-2] 'ham' >>> a[-5] 'egg' >>> a[-6] 'spam' >>> a[-len[a]] 'spam' >>> a[-8] Traceback [most recent call last]: File "", line 1, in a[-8] IndexError: list index out of range
9>>> a = ['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster'] >>> a ['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster'] >>> a[0] 'spam' >>> a[2] 'bacon' >>> a[5] 'lobster' >>> a[len[a]-1] 'lobster' >>> a[6] Traceback [most recent call last]: File "", line 1, in a[6] IndexError: list index out of range
- Bắt đầu với tư thế
2>>> a = ['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster'] >>> a[-1] 'lobster' >>> a[-2] 'ham' >>> a[-5] 'egg' >>> a[-6] 'spam' >>> a[-len[a]] 'spam' >>> a[-8] Traceback [most recent call last]: File "", line 1, in a[-8] IndexError: list index out of range
- Tối đa nhưng không bao gồm
3>>> a = ['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster'] >>> a[-1] 'lobster' >>> a[-2] 'ham' >>> a[-5] 'egg' >>> a[-6] 'spam' >>> a[-len[a]] 'spam' >>> a[-8] Traceback [most recent call last]: File "", line 1, in a[-8] IndexError: list index out of range
Ajay trên
@chris cảm ơn vì đã làm rõ
kiran trên
>>> a = ['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']
>>> a
['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']
>>> a[0]
'spam'
>>> a[2]
'bacon'
>>> a[5]
'lobster'
>>> a[len[a]-1]
'lobster'
>>> a[6]
Traceback [most recent call last]:
File "", line 1, in
a[6]
IndexError: list index out of range
1Tại sao nó trả về chuỗi rỗng? . Bạn có thể cho tôi rõ ràng nhất về điều này?
>>> a = ['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']
>>> a
['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']
>>> a[0]
'spam'
>>> a[2]
'bacon'
>>> a[5]
'lobster'
>>> a[len[a]-1]
'lobster'
>>> a[6]
Traceback [most recent call last]:
File "", line 1, in
a[6]
IndexError: list index out of range
2kiran trên
Giá trị sẽ là
In [43]: a = [9, 1, 2, 4, 5, 6, 8]
In [44]: a[6:0:-2]
Out[44]: [8, 5, 2]
9Bartosz Zaczyński Nhóm RP trên
Hãy nghĩ về các chỉ số âm như một ký hiệu tốc ký để trừ đi độ dài chuỗi đã cho
>>> a = ['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']
>>> a
['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']
>>> a[0]
'spam'
>>> a[2]
'bacon'
>>> a[5]
'lobster'
>>> a[len[a]-1]
'lobster'
>>> a[6]
Traceback [most recent call last]:
File "", line 1, in
a[6]
IndexError: list index out of range
3Các chỉ số tiêu cực trong ví dụ “hello world” của bạn sẽ chuyển thành điều này
>>> a = ['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']
>>> a
['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']
>>> a[0]
'spam'
>>> a[2]
'bacon'
>>> a[5]
'lobster'
>>> a[len[a]-1]
'lobster'
>>> a[6]
Traceback [most recent call last]:
File "", line 1, in
a[6]
IndexError: list index out of range
4Bạn đang nhận được một chuỗi trống vì chỉ số bên trái cao hơn chỉ số bên phải, trong khi bạn chưa chỉ ra thứ tự đảo ngược với đối số "bước" thứ ba. Nếu bạn đã làm, đây là bạn sẽ nhận được
>>> a = ['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']
>>> a
['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']
>>> a[0]
'spam'
>>> a[2]
'bacon'
>>> a[5]
'lobster'
>>> a[len[a]-1]
'lobster'
>>> a[6]
Traceback [most recent call last]:
File "", line 1, in
a[6]
IndexError: list index out of range
5Bạn có thể lấy các chỉ số kết quả được sử dụng bởi vòng lặp bên dưới như thế này
>>> a = ['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']
>>> a
['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']
>>> a[0]
'spam'
>>> a[2]
'bacon'
>>> a[5]
'lobster'
>>> a[len[a]-1]
'lobster'
>>> a[6]
Traceback [most recent call last]:
File "", line 1, in
a[6]
IndexError: list index out of range
6Nó trả về một bộ mà bạn có thể giải nén và chuyển đến hàm
>>> a = ['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']
>>> a
['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']
>>> a[0]
'spam'
>>> a[2]
'bacon'
>>> a[5]
'lobster'
>>> a[len[a]-1]
'lobster'
>>> a[6]
Traceback [most recent call last]:
File "", line 1, in
a[6]
IndexError: list index out of range
00>>> a = ['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']
>>> a
['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']
>>> a[0]
'spam'
>>> a[2]
'bacon'
>>> a[5]
'lobster'
>>> a[len[a]-1]
'lobster'
>>> a[6]
Traceback [most recent call last]:
File "", line 1, in
a[6]
IndexError: list index out of range
7Đây là các chỉ số được sử dụng bởi cú pháp dấu ngoặc vuông
kiran trên
Rực rỡ @Bartosz Zaczyński. Cảm ơn
mo on
Tôi vui vẻ bắt đầu sử dụng bpython; . Thử tất cả mọi thứ. Và nhiều hơn nữa. ] Làm điều đó tôi gặp phải điều này