Hướng dẫn python split unknown length - python chia độ dài không xác định

Giả sử bạn có một danh sách, bạn không chắc chắn độ dài như:

li1 = [Jan 1', 'Jan 2', 'Jan 3', 'Jan 4', 'Jan 5', 'Jan 6', 'Jan 7', 'Jan 8', 'Jan 9', 'Jan 10', 'Jan 11', 'Jan 12', 'Jan 13', 'Jan 14', 'Jan 15', 'Jan 16', 'Jan 17', 'Jan 18', 'Jan 19', 'Jan 20', 'Jan 21', 'Jan 22', 'Jan 23', 'Jan 24', 'Jan 25', 'Jan 26', 'Jan 27', 'Jan 28', 'Jan 29', 'Jan 30', 'Jan 31', 'Feb 1', 'Feb 2', 'Feb 3', 'Feb 4', 'Feb 5', 'Feb 6', 'Feb 7', 'Feb 8', 'Feb 9', 'Feb 10', 'Feb 11', 'Feb 12', 'Feb 13', 'Feb 14']

Làm thế nào bạn có thể chia cái này như vậy

a = [(first half of li1)]
b = [(second half of li1)]

Tôi đã thử

a = [:len(li1)/2]
b = [len(li1)/2:]

a = li1[:len(li1)/2]
b = li1[len(li1)/2:]

Và tôi nhận được lỗi cho cả hai. Giáo viên của tôi đã đề cập đến điều gì đó về việc lập chỉ mục nhưng không làm tốt công việc giải thích 4

Chia một chuỗi theo số lượng không gian không xác định trong Python #

Sử dụng phương thức

a = [(first half of li1)]
b = [(second half of li1)]
0 mà không có đối số để phân chia một chuỗi theo số lượng không gian không xác định, ví dụ:
a = [(first half of li1)]
b = [(second half of li1)]
1. Khi phương thức
a = [(first half of li1)]
b = [(second half of li1)]
0 được gọi mà không có đối số, nó coi các ký tự khoảng trắng liên tiếp là một dấu phân cách duy nhất.

Copied!

my_str = 'one two three four' my_list = my_str.split() print(my_list) # 👉️ ['one', 'two', 'three', 'four']

Chúng tôi đã sử dụng phương thức

a = [(first half of li1)]
b = [(second half of li1)]
0 để phân chia một chuỗi theo số lượng không gian không xác định.

Phương thức str.split () chia chuỗi thành một danh sách các chuỗi con bằng cách sử dụng dấu phân cách.

Phương thức lấy 2 tham số sau:

TênSự mô tả
máy tách biệtChia chuỗi thành chuỗi con trên mỗi lần xuất hiện của bộ phân cách (tùy chọn)
MaxSplitNhiều nhất
a = [(first half of li1)]
b = [(second half of li1)]
4 chia tách được thực hiện (tùy chọn)

Khi phương thức

a = [(first half of li1)]
b = [(second half of li1)]
0 được gọi mà không có dấu phân cách, nó coi các ký tự khoảng trắng liên tiếp là một dấu phân cách duy nhất.

Nếu chuỗi bắt đầu hoặc kết thúc bằng khoảng trắng kéo dài, danh sách sẽ không chứa các phần tử chuỗi trống.

Copied!

my_str = ' one two three four ' my_list = my_str.split() print(my_list) # 👉️ ['one', 'two', 'three', 'four']

Nếu chúng ta không chuyển đối số cho phương thức

a = [(first half of li1)]
b = [(second half of li1)]
6 và chia một chuỗi trống hoặc một chuỗi chỉ chứa các ký tự khoảng trắng, chúng ta sẽ nhận được một danh sách trống.

Copied!

my_str = ' ' my_list = my_str.split() print(my_list) # 👉️ []

Bạn cũng có thể sử dụng một biểu thức thông thường để phân chia một chuỗi theo số lượng không gian không xác định.

Sử dụng phương thức

a = [(first half of li1)]
b = [(second half of li1)]
7 để phân chia một chuỗi theo số lượng không gian, ví dụ:
a = [(first half of li1)]
b = [(second half of li1)]
8. Phương thức
a = [(first half of li1)]
b = [(second half of li1)]
7 sẽ phân chia chuỗi trên mỗi lần xuất hiện của một hoặc nhiều khoảng trắng và sẽ trả về một danh sách chứa kết quả.

Copied!

import re my_str = 'one two three four' my_list = re.split(r'\s+', my_str) print(my_list) # 👉️ ['one', 'two', 'three', 'four']

Phương thức Re.Split lấy một mẫu và một chuỗi và phân tách chuỗi trên mỗi lần xuất hiện của mẫu.

Nhân vật

a = [:len(li1)/2]
b = [len(li1)/2:]
0 phù hợp với các ký tự khoảng trắng unicode như
a = [:len(li1)/2]
b = [len(li1)/2:]
1.

Plus

a = [:len(li1)/2]
b = [len(li1)/2:]
2 được sử dụng để phù hợp với ký tự trước (khoảng trắng) 1 lần trở lên.

Toàn bộ, biểu thức chính quy khớp với một hoặc nhiều ký tự khoảng trắng.

Khi sử dụng phương pháp này, bạn sẽ nhận được các phần tử chuỗi trống nếu chuỗi của bạn bắt đầu bằng hoặc kết thúc bằng khoảng trắng.

Copied!

import re my_str = ' one two three four ' my_list = re.split(r'\s+', my_str) print(my_list) # 👉️ ['', 'one', 'two', 'three', 'four', '']

Bạn có thể sử dụng chức năng

a = [:len(li1)/2]
b = [len(li1)/2:]
3 để xóa bất kỳ chuỗi trống nào khỏi danh sách.

Copied!

import re my_str = ' one two three four ' my_list = list(filter(None, re.split(r'\s+', my_str))) print(my_list) # 👉️ ['one', 'two', 'three', 'four']

Hàm bộ lọc có hàm và có thể lặp lại như các đối số và xây dựng một trình lặp lại từ các phần tử của có thể điều chỉnh được hàm trả về giá trị sự thật.

Nếu bạn vượt qua

a = [:len(li1)/2]
b = [len(li1)/2:]
4 cho đối số chức năng, tất cả các yếu tố giả mạo của ITEBLE được xóa.

Tất cả các giá trị không phải là sự thật được coi là giả mạo. Các giá trị giả trong Python là:

  • Các hằng số được xác định là giả mạo:
    a = [:len(li1)/2]
    b = [len(li1)/2:]
    
    4 và
    a = [:len(li1)/2]
    b = [len(li1)/2:]
    
    6.
  • a = [:len(li1)/2]
    b = [len(li1)/2:]
    
    7 (không) thuộc bất kỳ loại số nào
  • Trình tự và bộ sưu tập trống:
    a = [:len(li1)/2]
    b = [len(li1)/2:]
    
    8 (Chuỗi trống),
    a = [:len(li1)/2]
    b = [len(li1)/2:]
    
    9 (Tuple trống),
    a = li1[:len(li1)/2]
    b = li1[len(li1)/2:]
    
    0 (danh sách trống),
    a = li1[:len(li1)/2]
    b = li1[len(li1)/2:]
    
    1 (Từ điển trống),
    a = li1[:len(li1)/2]
    b = li1[len(li1)/2:]
    
    2 (bộ trống),
    a = li1[:len(li1)/2]
    b = li1[len(li1)/2:]
    
    3 (phạm vi trống).

Lưu ý rằng hàm

a = [:len(li1)/2]
b = [len(li1)/2:]
3 trả về đối tượng
a = li1[:len(li1)/2]
b = li1[len(li1)/2:]
5, vì vậy chúng tôi phải sử dụng lớp
a = li1[:len(li1)/2]
b = li1[len(li1)/2:]
6 để chuyển đổi đối tượng
a = li1[:len(li1)/2]
b = li1[len(li1)/2:]
5 thành danh sách.