Có phương pháp thay thế cho danh sách trong Python không?

Chuỗi trong Python là một kiểu dữ liệu bất biến. Thay thế một chuỗi bằng một chuỗi khác là một hoạt động thường xuyên trong bất kỳ sự phát triển nào. Phương thức string replace[] trong Python sẽ giúp chúng ta thay thế một chuỗi bằng một chuỗi cụ thể trong danh sách Chuỗi

Danh sách Python thay thế

Để thay thế một phần tử trong danh sách Python, hãy sử dụng khả năng hiểu danh sách. Để thay thế một chuỗi trong danh sách Python, hãy sử dụng kết hợp tính năng hiểu danh sách + thay thế chuỗi[].

Thí dụ

Hãy xem ví dụ mã sau đây

# app.py

data = ['Python', '5', 'Golang', '4', 'PHP', '3']

# printing data list
print["The original list : " + str[data]]

# using list comprehension + replace[]
# Replace substring in list of strings
res = [item.replace['4', '5'] for item in data]

# print result
print["The list after substring replacement : " + str[res]]

đầu ra

The original list : ['Python', '5', 'Golang', '4', 'PHP', '3']
The list after substring replacement : ['Python', '5', 'Golang', '5', 'PHP', '3']

Chúng tôi đã xác định một danh sách Python và sau đó sử dụng khả năng hiểu danh sách để thay thế 4 bằng 5, trả về danh sách mới và sau đó in danh sách

Phương thức thay thế chuỗi Python [] thay thế một cụm từ đã chỉ định bằng một cụm từ khác

Hãy xem một ví dụ khác trong đó chúng ta thay thế chuỗi Golang thành Go

data = ['Python', '5', 'Golang', '4', 'PHP', '3']

# printing data list
print["The original list : " + str[data]]

# using list comprehension + replace[]
# Replace substring in list of strings
res = [item.replace['Golang', 'Go'] for item in data]

# print result
print["The list after string replacement : " + str[res]]

đầu ra

The original list : ['Python', '5', 'Golang', '4', 'PHP', '3']
The list after string replacement : ['Python', '5', 'Go', '4', 'PHP', '3']

Nếu không có gì cụ thể được chỉ định, thì tất cả các lần xuất hiện của cụm từ được chỉ định sẽ được thay thế

Thay thế danh sách Sử dụng map[] + lambda + replace[]

Sử dụng kết hợp các hàm Python map[], hàm lambda và chuỗi thay thế[] để thay thế một chuỗi bằng một chuỗi khác trong danh sách Python

Xem đoạn mã sau

data = ['Python', '5', 'Golang', '4', 'PHP', '3']

# printing data list
print["The original list : " + str[data]]

# using map[] + lambda + replace[]
# Replace string in list of strings
res = list[map[lambda st: str.replace[st, "PHP", ".NET"], data]]

# print result
print["The list after string replacement : " + str[res]]

đầu ra

The original list : ['Python', '5', 'Golang', '4', 'PHP', '3']
The list after string replacement : ['Python', '5', 'Golang', '4', '.NET', '3']

Trong đoạn mã trên, chúng tôi đã xác định danh sách và sau đó sử dụng hàm map[] để thay thế chuỗi PHP thành. Net String và chuyển trình lặp đó thành một danh sách bằng cách sử dụng hàm list[]

Thay thế số nguyên trong Danh sách Python

Để thay thế một số nguyên bằng một số nguyên trong danh sách Python, hãy sử dụng toán tử bậc ba và khả năng hiểu danh sách.

Xem đoạn mã sau

data = [19, 11, 23, 18, 46, 23]

# printing data list
print["The original list : " + str[data]]

# using list comprehension + ternary operator
# Replace integer in list of integers
res = [21 if item == 23 else item for item in data]

# print result
print["The list after integer replacement : " + str[res]]

đầu ra

The original list : [19, 11, 23, 18, 46, 23]
The list after integer replacement : [19, 11, 21, 18, 46, 21]

Trong ví dụ trên, chúng tôi đã xác định một danh sách và chúng tôi cần thay thế 23 số nguyên bằng 21 số nguyên

Nếu nó tìm thấy nhiều số nguyên, nó sẽ thay thế tất cả các số bằng các giá trị được chỉ định. Vì vậy, hãy ghi nhớ rằng.

Trong Python, bạn có thể tạo một danh sách mới từ danh sách các chuỗi bằng cách trích xuất, thay thế hoặc chuyển đổi các phần tử đáp ứng các điều kiện nhất định bằng khả năng hiểu danh sách

Bài viết này giải thích ngắn gọn cách hiểu danh sách và sau đó mô tả những điều sau đây bằng mã mẫu

  • Trích xuất các chuỗi chứa hoặc không chứa một chuỗi cụ thể
  • Thay thế một chuỗi cụ thể trong danh sách
  • Trích xuất các chuỗi bắt đầu hoặc không bắt đầu bằng một chuỗi cụ thể
  • Trích xuất các chuỗi kết thúc hoặc không kết thúc bằng một chuỗi cụ thể
  • Trích xuất chuỗi bằng chữ hoa hoặc chữ thường
  • Chuyển đổi chữ hoa và chữ thường
  • Trích xuất chuỗi theo chữ cái hoặc số
  • Nhiều điều kiện
  • Biểu thức chính quy [regex]

Xem bài viết sau để biết thêm thông tin về cách trích xuất và thay thế chuỗi

  • Trích xuất một chuỗi con từ một chuỗi trong Python [vị trí, biểu thức chính quy]
  • Thay chuỗi trong Python [replace, translate, re. phụ, lại. phụ]

Liên kết được tài trợ

Danh sách hiểu

Để tạo một danh sách mới từ một danh sách, bạn có thể sử dụng tính năng hiểu danh sách, viết đơn giản hơn vòng lặp

[variable_name for variable_name in iterable if condition]
4

  • Danh sách hiểu trong Python

[expression for variable_name in iterable if condition]

Nếu bạn chỉ muốn trích xuất các phần tử đáp ứng

[variable_name for variable_name in iterable if condition]
5, bạn không cần xử lý chúng với
[variable_name for variable_name in iterable if condition]
6;

________số 8_______

Nếu bạn thay đổi

[variable_name for variable_name in iterable if condition]
8 thành
[variable_name for variable_name in iterable if condition]
9, bạn có thể rút ra các phần tử không thỏa mãn
[variable_name for variable_name in iterable if condition]
5

Để biết thêm thông tin về việc trích xuất, thay thế và chuyển đổi các phần tử danh sách bằng cách sử dụng tính năng hiểu danh sách, vui lòng tham khảo bài viết sau

  • Trích xuất, thay thế, chuyển đổi các phần tử của danh sách trong Python

Trích xuất các chuỗi chứa hoặc không chứa một chuỗi cụ thể

l = ['oneXXXaaa', 'twoXXXbbb', 'three999aaa', '000111222']

l_in = [s for s in l if 'XXX' in s]
print[l_in]
# ['oneXXXaaa', 'twoXXXbbb']

l_in_not = [s for s in l if 'XXX' not in s]
print[l_in_not]
# ['three999aaa', '000111222']
1 trả về
l = ['oneXXXaaa', 'twoXXXbbb', 'three999aaa', '000111222']

l_in = [s for s in l if 'XXX' in s]
print[l_in]
# ['oneXXXaaa', 'twoXXXbbb']

l_in_not = [s for s in l if 'XXX' not in s]
print[l_in_not]
# ['three999aaa', '000111222']
2 nếu
l = ['oneXXXaaa', 'twoXXXbbb', 'three999aaa', '000111222']

l_in = [s for s in l if 'XXX' in s]
print[l_in]
# ['oneXXXaaa', 'twoXXXbbb']

l_in_not = [s for s in l if 'XXX' not in s]
print[l_in_not]
# ['three999aaa', '000111222']
3 chứa một
l = ['oneXXXaaa', 'twoXXXbbb', 'three999aaa', '000111222']

l_in = [s for s in l if 'XXX' in s]
print[l_in]
# ['oneXXXaaa', 'twoXXXbbb']

l_in_not = [s for s in l if 'XXX' not in s]
print[l_in_not]
# ['three999aaa', '000111222']
4. Sử dụng
l = ['oneXXXaaa', 'twoXXXbbb', 'three999aaa', '000111222']

l_in = [s for s in l if 'XXX' in s]
print[l_in]
# ['oneXXXaaa', 'twoXXXbbb']

l_in_not = [s for s in l if 'XXX' not in s]
print[l_in_not]
# ['three999aaa', '000111222']
5 để phủ định

  • toán tử in trong Python [đối với danh sách, chuỗi, từ điển, v.v. ]

l = ['oneXXXaaa', 'twoXXXbbb', 'three999aaa', '000111222']

l_in = [s for s in l if 'XXX' in s]
print[l_in]
# ['oneXXXaaa', 'twoXXXbbb']

l_in_not = [s for s in l if 'XXX' not in s]
print[l_in_not]
# ['three999aaa', '000111222']

nguồn.

Thay thế một chuỗi cụ thể trong danh sách

Nếu bạn muốn thay thế chuỗi phần tử của danh sách, hãy sử dụng phương thức chuỗi

l = ['oneXXXaaa', 'twoXXXbbb', 'three999aaa', '000111222']

l_in = [s for s in l if 'XXX' in s]
print[l_in]
# ['oneXXXaaa', 'twoXXXbbb']

l_in_not = [s for s in l if 'XXX' not in s]
print[l_in_not]
# ['three999aaa', '000111222']
6 cho từng phần tử bằng cách hiểu danh sách

Nếu không có chuỗi nào để thay thế, việc áp dụng

l = ['oneXXXaaa', 'twoXXXbbb', 'three999aaa', '000111222']

l_in = [s for s in l if 'XXX' in s]
print[l_in]
# ['oneXXXaaa', 'twoXXXbbb']

l_in_not = [s for s in l if 'XXX' not in s]
print[l_in_not]
# ['three999aaa', '000111222']
6 sẽ không thay đổi nó, vì vậy bạn không cần chọn phần tử có
[variable_name for variable_name in iterable if condition]
8

l_replace = [s.replace['XXX', 'ZZZ'] for s in l]
print[l_replace]
# ['oneZZZaaa', 'twoZZZbbb', 'three999aaa', '000111222']

nguồn.

Để thay thế toàn bộ phần tử có chứa một chuỗi cụ thể, hãy giải nén nó bằng

l = ['oneXXXaaa', 'twoXXXbbb', 'three999aaa', '000111222']

l_in = [s for s in l if 'XXX' in s]
print[l_in]
# ['oneXXXaaa', 'twoXXXbbb']

l_in_not = [s for s in l if 'XXX' not in s]
print[l_in_not]
# ['three999aaa', '000111222']
9 và sử dụng các biểu thức điều kiện [toán tử bậc ba],
l_replace = [s.replace['XXX', 'ZZZ'] for s in l]
print[l_replace]
# ['oneZZZaaa', 'twoZZZbbb', 'three999aaa', '000111222']
0

  • Biểu thức điều kiện trong Python

Sử dụng các biểu thức điều kiện cho phần

[variable_name for variable_name in iterable if condition]
6 của việc hiểu danh sách

  • Trích xuất, thay thế, chuyển đổi các phần tử của danh sách trong Python

l_replace_all = ['ZZZ' if 'XXX' in s else s for s in l]
print[l_replace_all]
# ['ZZZ', 'ZZZ', 'three999aaa', '000111222']

nguồn.

Có thể dễ hiểu hơn và tránh nhầm lẫn với dấu ngoặc đơn. Về mặt ngữ pháp, có dấu ngoặc đơn hay không không quan trọng

[['ZZZ' if ['XXX' in s] else s] for s in l]

Trích xuất các chuỗi bắt đầu hoặc không bắt đầu bằng một chuỗi cụ thể

Phương thức chuỗi

l_replace = [s.replace['XXX', 'ZZZ'] for s in l]
print[l_replace]
# ['oneZZZaaa', 'twoZZZbbb', 'three999aaa', '000111222']
2 trả về
l = ['oneXXXaaa', 'twoXXXbbb', 'three999aaa', '000111222']

l_in = [s for s in l if 'XXX' in s]
print[l_in]
# ['oneXXXaaa', 'twoXXXbbb']

l_in_not = [s for s in l if 'XXX' not in s]
print[l_in_not]
# ['three999aaa', '000111222']
2 nếu chuỗi bắt đầu bằng chuỗi cụ thể

l_start = [s for s in l if s.startswith['t']]
print[l_start]
# ['twoXXXbbb', 'three999aaa']

l_start_not = [s for s in l if not s.startswith['t']]
print[l_start_not]
# ['oneXXXaaa', '000111222']

nguồn.

Trích xuất các chuỗi kết thúc hoặc không kết thúc bằng một chuỗi cụ thể

Phương thức chuỗi

l_replace = [s.replace['XXX', 'ZZZ'] for s in l]
print[l_replace]
# ['oneZZZaaa', 'twoZZZbbb', 'three999aaa', '000111222']
4 trả về
l = ['oneXXXaaa', 'twoXXXbbb', 'three999aaa', '000111222']

l_in = [s for s in l if 'XXX' in s]
print[l_in]
# ['oneXXXaaa', 'twoXXXbbb']

l_in_not = [s for s in l if 'XXX' not in s]
print[l_in_not]
# ['three999aaa', '000111222']
2 nếu chuỗi kết thúc bằng chuỗi cụ thể

l_end = [s for s in l if s.endswith['aaa']]
print[l_end]
# ['oneXXXaaa', 'three999aaa']

l_end_not = [s for s in l if not s.endswith['aaa']]
print[l_end_not]
# ['twoXXXbbb', '000111222']

nguồn.

Liên kết được tài trợ

Trích xuất chuỗi bằng chữ hoa hoặc chữ thường

Bạn có thể sử dụng các phương thức chuỗi

l_replace = [s.replace['XXX', 'ZZZ'] for s in l]
print[l_replace]
# ['oneZZZaaa', 'twoZZZbbb', 'three999aaa', '000111222']
6,
l_replace = [s.replace['XXX', 'ZZZ'] for s in l]
print[l_replace]
# ['oneZZZaaa', 'twoZZZbbb', 'three999aaa', '000111222']
7 để xác định xem một chuỗi là chữ hoa hay chữ thường

l_lower = [s for s in l if s.islower[]]
print[l_lower]
# ['three999aaa']

nguồn.

Chuyển đổi chữ hoa và chữ thường

Nếu bạn muốn chuyển đổi tất cả các chữ cái thành chữ hoa hoặc chữ thường, hãy sử dụng các phương thức chuỗi

l_replace = [s.replace['XXX', 'ZZZ'] for s in l]
print[l_replace]
# ['oneZZZaaa', 'twoZZZbbb', 'three999aaa', '000111222']
8 hoặc
l_replace = [s.replace['XXX', 'ZZZ'] for s in l]
print[l_replace]
# ['oneZZZaaa', 'twoZZZbbb', 'three999aaa', '000111222']
9. Các phương pháp khác cũng được cung cấp, chẳng hạn như
l_replace_all = ['ZZZ' if 'XXX' in s else s for s in l]
print[l_replace_all]
# ['ZZZ', 'ZZZ', 'three999aaa', '000111222']
0 để viết hoa chữ cái đầu tiên và
l_replace_all = ['ZZZ' if 'XXX' in s else s for s in l]
print[l_replace_all]
# ['ZZZ', 'ZZZ', 'three999aaa', '000111222']
1 để hoán đổi chữ hoa và chữ thường

Sử dụng biểu thức điều kiện để chỉ chuyển đổi những phần tử thỏa mãn điều kiện

l_upper_all = [s.upper[] for s in l]
print[l_upper_all]
# ['ONEXXXAAA', 'TWOXXXBBB', 'THREE999AAA', '000111222']

l_lower_to_upper = [s.upper[] if s.islower[] else s for s in l]
print[l_lower_to_upper]
# ['oneXXXaaa', 'twoXXXbbb', 'THREE999AAA', '000111222']

nguồn.

Trích xuất chuỗi theo chữ cái hoặc số

Bạn có thể sử dụng các phương thức chuỗi

l_replace_all = ['ZZZ' if 'XXX' in s else s for s in l]
print[l_replace_all]
# ['ZZZ', 'ZZZ', 'three999aaa', '000111222']
2 và
l_replace_all = ['ZZZ' if 'XXX' in s else s for s in l]
print[l_replace_all]
# ['ZZZ', 'ZZZ', 'three999aaa', '000111222']
3 để xác định xem một chuỗi là toàn chữ cái hay toàn chữ số

  • Kiểm tra xem một chuỗi là số, chữ cái, chữ số hay ASCII

[variable_name for variable_name in iterable if condition]
0

nguồn.

Nhiều điều kiện

Bạn cũng có thể chỉ định nhiều điều kiện bằng cách sử dụng

l_replace_all = ['ZZZ' if 'XXX' in s else s for s in l]
print[l_replace_all]
# ['ZZZ', 'ZZZ', 'three999aaa', '000111222']
4 và
l_replace_all = ['ZZZ' if 'XXX' in s else s for s in l]
print[l_replace_all]
# ['ZZZ', 'ZZZ', 'three999aaa', '000111222']
5 trong phần
[variable_name for variable_name in iterable if condition]
5 của phần hiểu danh sách. Bạn cũng có thể sử dụng phủ định
l_replace_all = ['ZZZ' if 'XXX' in s else s for s in l]
print[l_replace_all]
# ['ZZZ', 'ZZZ', 'three999aaa', '000111222']
7

Nếu bạn sử dụng nhiều hơn ba điều kiện, thì việc đặt mỗi nhóm với

l_replace_all = ['ZZZ' if 'XXX' in s else s for s in l]
print[l_replace_all]
# ['ZZZ', 'ZZZ', 'three999aaa', '000111222']
8 sẽ an toàn hơn vì kết quả sẽ khác nhau tùy thuộc vào thứ tự

[variable_name for variable_name in iterable if condition]
1

nguồn.

Biểu thức chính quy [regex]

Bạn có thể sử dụng biểu thức chính quy [regex] để xử lý linh hoạt hơn

  • lại — Các phép toán biểu thức chính quy — Python 3. 9. 7 tài liệu

l_replace_all = ['ZZZ' if 'XXX' in s else s for s in l]
print[l_replace_all]
# ['ZZZ', 'ZZZ', 'three999aaa', '000111222']
9 trả về một đối tượng
[['ZZZ' if ['XXX' in s] else s] for s in l]
0 nếu nó khớp, hoặc
[['ZZZ' if ['XXX' in s] else s] for s in l]
1 nếu nó không khớp

Vì các đối tượng

[['ZZZ' if ['XXX' in s] else s] for s in l]
0 được đánh giá là
l = ['oneXXXaaa', 'twoXXXbbb', 'three999aaa', '000111222']

l_in = [s for s in l if 'XXX' in s]
print[l_in]
# ['oneXXXaaa', 'twoXXXbbb']

l_in_not = [s for s in l if 'XXX' not in s]
print[l_in_not]
# ['three999aaa', '000111222']
2 và
[['ZZZ' if ['XXX' in s] else s] for s in l]
1 là
[['ZZZ' if ['XXX' in s] else s] for s in l]
5, nên nếu bạn chỉ muốn trích xuất các phần tử khớp với mẫu biểu thức chính quy, bạn nên áp dụng
l_replace_all = ['ZZZ' if 'XXX' in s else s for s in l]
print[l_replace_all]
# ['ZZZ', 'ZZZ', 'three999aaa', '000111222']
9 cho phần
[variable_name for variable_name in iterable if condition]
5 của cách hiểu danh sách như trong các ví dụ trước

[variable_name for variable_name in iterable if condition]
2

nguồn.

Bạn cũng có thể sử dụng

[['ZZZ' if ['XXX' in s] else s] for s in l]
8 để thay thế phần phù hợp với mẫu biểu thức chính quy. Nếu bạn chỉ muốn trích xuất và thay thế các phần tử phù hợp, hãy thêm
[variable_name for variable_name in iterable if condition]
8

Chủ Đề