Cách ngắt danh sách trong Python

Trong hướng dẫn này, Chúng ta sẽ tìm hiểu về cách Chia đôi Danh sách bằng Lập trình Python. Danh sách là loại dữ liệu có thể thay đổi có thể lưu trữ một tập hợp các mục. Bài viết này thảo luận về các cách khác nhau để chia đôi danh sách, n danh sách con, n phần và khối. Hai nửa của danh sách ban đầu chứa các phần tử theo thứ tự như trong danh sách ban đầu. Hơn nữa, chúng ta cũng sẽ thảo luận

Nếu bạn muốn tìm hiểu thêm về danh sách trong python, hãy xem Hướng dẫn về danh sách Python

  • Trường hợp 1. Chia một nửa danh sách
  • Trường hợp 2. Tách một danh sách thành n danh sách con hoặc các phần
  • Trường hợp 3. Tách một danh sách thành nhiều phần
Case 1: Given an input list, split it into two halves.

(a) When the list is symmetrical.
 
 Example:
 Input= [1,7,5,3,2,8,9,4]
 Output= [1,7,5,3] and [2,8,9,4]

(b) When the list is asymmetrical.
 
 Example:
 Input= [13,6,2,4,4,81,9,32,5,7,11]
 Output= [13,6,2,4,4] and [81,9,32,5,7,11]


Case 2: Given an input list, split it into n sublists.

 Example:
 n=4
 Input= [5,3,2,1,3,24,5,41,35,4,6]
 Output= [5,3,2], [1,3,24], [5,41,35], [4,6]

Case 3: Given an input list, split it into n sized chunks.

 Example:
 n=3
 Input= [24,54,9,76,32,42,97,64,3,1,93,22,53]
 Output= [24,54,9], [76,32,42], [97,64,3], [1,93,22], [53]

Trường hợp 1. chia đôi danh sách bằng python

Trường hợp đầu tiên là chia danh sách thành một nửa hoặc hai nửa. Các nửa này có thể có kích thước bằng nhau hoặc không bằng nhau tùy thuộc vào độ dài của danh sách. Cả hai khả năng sẽ được thảo luận ở đây. Chúng ta có thể sử dụng kỹ thuật cắt lát để chia danh sách. Điều này có thể được thực hiện bằng các bước sau

  • Lấy độ dài của danh sách bằng hàm len()
  • Nếu độ dài của các phần không được cung cấp, hãy chia độ dài của danh sách cho 2 bằng cách sử dụng toán tử sàn để lấy chỉ mục giữa của danh sách
  • Cắt danh sách thành hai nửa bằng cách sử dụng [. middle_index] và [middle_index. ]

Ví dụ

Trước tiên hãy xem xét một ví dụ trong đó độ dài của nửa đầu tiên được đưa ra

#create and initialize a list
list1 = [1,2,3,4,5,6]


#initialize the middle index with the length of first half
middle_index=3

#Split the list from starting index upto middle index in first half
first_half=list1[:middle_index]

#Split the list from middle index index upto the last index in second half
sec_half=list1[middle_index:]

#printing original lists and two halves
print('The original list is: ',list1)
print("First half of list is ",first_half)

print("Second half of list is ",sec_half)

ĐẦU RA

split list into half

Điều gì sẽ xảy ra nếu kích thước của hai nửa hoặc chỉ số phân tách không được cung cấp. Sau đó, chúng ta phải tìm chỉ mục giữa của danh sách có thể được thực hiện bằng cách chia độ dài của danh sách cho 2. if Nhưng nếu độ dài của danh sách là số lẻ hoặc danh sách không đối xứng thì khi chia ta sẽ nhận được giá trị float. Do đó, chúng tôi sẽ sử dụng toán tử sàn (//) để làm tròn kết quả

Ví dụ

#function which split the list into two halves
def splitlist(inputlist,n):

  first_half=inputlist[:n]
  sec_half=inputlist[n:]

  return first_half,sec_half


if __name__ == "__main__" :
  # create an empty list
  list1 = []
  # Take number of elements as input from user
  length = int(input("Enter number of elements : "))
  
  # iinitialize the list using for loop
  for i in range(0, length):
    item = int(input("Enter element "+str(i+1)+" :"))
    list1.append(item)
  
  middle_index=length//2
  first,sec=splitlist(list1,middle_index)
  #printing lists
  
  print("Original list: ", list1)
  print("First half: ", first)
  print("second half: ", sec)

đầu ra

split list in half

Trong ví dụ trên, danh sách bao gồm một số phần tử lẻ do đó hàm split trả về hai danh sách không bằng nhau. Vì độ dài của danh sách là 7, do đó điểm giữa là (7/2) = 3. 5. Toán tử sàn trả về giá trị số nguyên gần nhất nhỏ hơn hoặc bằng kết quả thu được bằng phép chia. Trong trường hợp này, toán tử sàn trả về 3 thay vì 3. 5. Do đó độ dài của nửa đầu tiên là 3, trong khi nửa còn lại có độ dài là 4

trường hợp 2. tách một danh sách thành n danh sách con

Python có thư viện NumPy có chức năng tích hợp sẵn 'array_split()' có thể chia danh sách thành n phần. Hàm lấy một mảng và số lượng phân tách 'n' làm đối số và trả về danh sách n mảng con. Hãy hiểu việc sử dụng chức năng này bằng một ví dụ

Ví dụ

import numpy as np

#creating a list
list1 = [1,2,3,4,5,6,7,8,9]

sub_lists = np.array_split(list1, 3)
count=1
for i in sub_lists:
    print("List ", count, ": ",list(i))
    count+=1

đầu ra

splits lists into n sublists

Trong ví dụ này, chúng tôi đã sử dụng chức năng của thư viện NumPy lấy danh sách ban đầu và số lượng phân tách làm đối số và trả về các phần của danh sách

trường hợp 3. chia danh sách thành nhiều phần hoặc các phần có kích thước n

Nếu độ dài của đoạn và danh sách được đưa ra và bạn được yêu cầu chia nhỏ danh sách thì bạn có thể thực hiện việc này bằng cách cắt toán tử. Ví dụ sau đây cho thấy việc thực hiện vấn đề này

Ví dụ

 def split_list(Input_list, n):
    for i in range(0, len(Input_list), n):
        yield Input_list[i:i + n]

if __name__ == "__main__" :
  # create an empty list
  list1 = []
  # Take number of elements as input from user
  length = int(input("Enter number of elements : "))
  
  # iinitialize the list using for loop
  for i in range(0, length):
    item = int(input("Enter element "+str(i+1)+" :"))
    list1.append(item)      
  # Take the size of chunks as an input from user
  n = int(input("Enter the size of chunks : "))
   
  X=split_list(list1, n)
  print(list(X))

đầu ra

split list into chunks

Vấn đề tương tự cũng có thể được thực hiện bằng cách sử dụng hiểu danh sách

# create an empty list
list1 = []
# Take number of elements as input from user
length = int(input("Enter number of elements : "))
  
# initialize the list using for loop
for i in range(0, length):
  item = int(input("Enter element "+str(i+1)+" :"))
  list1.append(item)      
# Take the size of chunks as an input from user
n = int(input("Enter the size of chunks : "))
X = [list1[i:i+n] for i in range(0, length, n)]
print("Chunks of Original list are:")
for i in X:
  print(i)

đầu ra

n parts splitting

Hướng dẫn này đã thảo luận chi tiết về ba trường hợp tách danh sách khác nhau cùng với các ví dụ. Nếu bạn có bất kỳ câu hỏi nào liên quan đến bài viết này, vui lòng cho chúng tôi biết trong phần bình luận. phản hồi của bạn sẽ được đánh giá cao