Cắt (slice) list trong python | Laptrinhcanban.com

HOME › >>

Cắt (slice) list trong python

Hướng dẫn cách cắt list trong python. Bạn sẽ học được khái niệm cắt (slice) list trong python là gì cũng như các cách cắt list trong python bằng index sau bài học này.

Cắt (slice) list trong python là gì

Cắt (slice) list trong python hay còn gọi là slice list python là thao tác lấy ra các phần tử trong một phạm vi của list ban đầu và tạo ra một list mới. Phạm vi cắt được chỉ định thông qua index của phần tử trong python.
Slice list python là gì

Cú pháp cắt (slice) list trong python như sau:

org_list [ start_index : end_index : step]

Trong đó,

  • org_list là list ban đầu
  • start_index : index của phần tử ở vị trí bắt đầu cắt
  • end_index: index của phần tử ở vị trí kết thúc cắt

Lưu ý kết quả của phép cắt (slice) list python sẽ bao gồm phần tử tại vị trí bắt đầu cắt, nhưng KHÔNG bao gồm phần tử tại vị trí kết thúc cắt. Trong trường hợp bạn muốn lấy cả phần tử ở vị trí kết thúc cắt, chúng ta cần chỉ định end_index công thêm 1 đơn vị để có thể bao gồm cả phần tử đó trong kết quả phép cắt.

Ví dụ cụ thể của cắt (slice) list trong python như sau:

nums = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(nums)
#>> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

cut_list= nums[0:5]
print(cut_list)
#>> [0, 1, 2, 3, 4]

cut_list2 = nums[3:7]
print(cut_list2)
#>> [3, 4, 5, 6]

Lưu ý là phép cắt (slice) list trong python sẽ KHÔNG thay đổi list ban đầu mà chỉ sao chép các phần tử trong một phạm vi trong list ban đầu và tạo ra một list mới.

nums = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

#Trước khi cắt
print(nums)
#>> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

nums_cut = nums[2:7]
print(nums_cut)
#>>[2, 3, 4, 5, 6]


#Sau khi cắt thì list ban đầu cũng không thay đổi.
print(nums)
#>> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Các phương pháp cắt list trong python

Cắt ra một phạm vi từ list ban đầu

Bằng cách chỉ định vị trí bắt đầu và vị trí kết thúc cắt bằng index của các phần tử tại các vị trí đó, chúng ta có thể cắt ra một phạm vi từ list python như ví dụ sau đây:

nums = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(nums[2:5])
#>> [2, 3, 4]

print(nums[-5: -2])
#>> [5, 6, 7]

Tương tự bạn cũng có thể cắt ra phạm vi từ một list có phần tử là các chuỗi ký tự như sau:

l = ['a','b','c','d','e']
print(l[2:4])
#>> ['c', 'd']

print(l[1:5])
#>> ['b', 'c', 'd', 'e']

Lưu ý là nếu bạn chỉ định vị trí bắt đầu hoặc kết thúc cắt bằng các giá trị index nằm ngoài phạm vi index trong list ban đầu, thì chức năng cắt (slice) list cũng chỉ có thể cắt ra phạm vi lớn nhất có thể từ list ban đầu mà thôi. Ví dụ:

nums = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(len(nums))
#>> 10

newlist = nums[2:100]
print(newlist)
#>> [2, 3, 4, 5, 6, 7, 8, 9]

newlist2 = nums[-80:-3]
print(newlist2)
#>> [0, 1, 2, 3, 4, 5, 6]

Cắt ra một phạm vi từ đầu tới giữa list python

Để cắt từ đầu tới giữa list python, chúng ta lược bỏ start_index khi viết cú pháp cắt list.
Ví dụ như chúng ta viết [:5] chẳng hạn. Khi đó, python ngầm hiểu vị trí bắt đầu bằng 0 và cắt list tương tự với khi viết [0:5] như ví dụ sau:

nums = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
newlist1= nums[0:5]
newlist2= nums[:5]

print(newlist1)
print(newlist2)

Kết quả:

[0, 1, 2, 3, 4]
[0, 1, 2, 3, 4]

Cắt ra một phạm vi từ giữa tới cuối list python

Để cắt (slice) list trong python từ giữa list tới cuối list, chúng ta lược bỏ end_index khi viết cú pháp cắt list.
Ví dụ như chúng ta viết [5:] chẳng hạn. Khi đó, python ngầm hiểu vị trí kết thúc bằng số phần tử của list (có thể tính bằng hàm len()) như ví dụ sau:

nums = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
newlist3= nums[5:]
newlist4= nums[5:10]
newlist5= nums[5:len(nums)]

print(newlist3)
print(newlist4)
print(newlist5)

Kết quả:

[5, 6, 7, 8, 9]
[5, 6, 7, 8, 9]
[5, 6, 7, 8, 9]

Cắt (slice) ngược list trong python

Khi chỉ định vị trí bắt đầu và kết thúc bằng index âm, chúng ta có thể cắt (slice) ngược một list trong python. Chúng ta sử dụng phương pháp này để Đảo ngược list trong python.

Ví dụ:

nums = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(nums[::-1])
#>> [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

Chúng ta cũng có thể nhảy cóc và bỏ qua một số phần tử khi cắt ngược list ban đầu như sau:

nums = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(nums[::-3])
#>> [9, 6, 3, 0]

Chúng ta cũng có cắt (slice) ngược list trong python trong một phạm vi của list ban đầu như sau:

nums = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(nums[8:2:-1])
#>> [8, 7, 6, 5, 4, 3]

print(nums[-2:-9:-2])
#>> [8, 6, 4, 2]

Tách list ban đầu thành 2 phần tại vị trí chỉ định

Bằng việc ứng dụng cắt list trong python, chúng ta có thể tách list ban đầu thành 2 phần nhỏ hơn tại một vị trí chỉ định. Trong ví dụ sau đây, chúng ta sẽ tách một list ban đầu thành 2 list nhỏ hơn tại vị trí index bằng 4 như sau:

nums = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

nums1 = nums[:4]
nums2 = nums[4:]

print(nums1)
print(nums2)

Kết quả:

[0, 1, 2, 3]
[4, 5, 6, 7, 8, 9]

Nhảy cóc và bỏ qua phần tử khi cắt list trong python | đối số step

Một ứng dụng thú vị của cắt (slice) list trong python, đó là chúng ta có thể nhảy cóc và bỏ qua một số phần tử khi cắt list.

Bằng cách sử dụng thêm đối số step khi cắt (slice) list trong python, chúng ta có thể nhảy cóc và cắt ra các phần tử có index cách nhau một quảng step như ví dụ sau đây:

nums = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(nums[::1])
print(nums[::2])
print(nums[::3])

Kết quả:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 2, 4, 6, 8]
[0, 3, 6, 9]

Chúng ta cũng có thể nhảy cóc và bỏ qua phần tử trong một phạm vi khi cắt list python như sau:

nums = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(nums[2:7:1])
print(nums[2:7:2])
print(nums[-7:-2:3])

Kết quả:

[2, 3, 4, 5, 6]
[2, 4, 6]
[3, 6]

Tổng kết

Trên đây Kiyoshi đã hướng dẫn bạn cách cắt (slice) list trong python rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.

Và hãy cùng tìm hiểu những kiến thức sâu hơn về python trong các bài học tiếp theo.

URL Link

https://laptrinhcanban.com/python/nhap-mon-lap-trinh-python/list-trong-python/cat-lat-list-trong-python/

Hãy chia sẻ và cùng lan tỏa kiến thức lập trình Nhật Bản tại Việt Nam!

HOME  › >>

Profile
きよしです!笑

Tác giả : Kiyoshi (Chis Thanh)

Kiyoshi là một cựu du học sinh tại Nhật Bản. Sau khi tốt nghiệp đại học Toyama năm 2017, Kiyoshi hiện đang làm BrSE tại Tokyo, Nhật Bản.