Hướng dẫn python modify list element while iterating - python sửa đổi phần tử danh sách trong khi lặp lại

Vì vòng lặp bên dưới chỉ sửa đổi các yếu tố đã thấy, nên nó sẽ được coi là chấp nhận được:

a = ['a',' b', 'c ', ' d ']

for i, s in enumerate(a):
    a[i] = s.strip()

print(a) # -> ['a', 'b', 'c', 'd']

Khác với:

a[:] = [s.strip() for s in a]

Trong đó, nó không yêu cầu tạo một danh sách tạm thời và một bài tập của nó để thay thế bản gốc, mặc dù nó đòi hỏi nhiều hoạt động lập chỉ mục hơn.

THẬN TRỌNG: Mặc dù bạn có thể sửa đổi các mục theo cách này, bạn không thể thay đổi số lượng mục trong

a[:] = [s.strip() for s in a]
1 mà không có nguy cơ gặp phải vấn đề. Although you can modify entries this way, you can't change the number of items in the
a[:] = [s.strip() for s in a]
1 without risking the chance of encountering problems.

Dưới đây là một ví dụ về những gì tôi có nghĩa là làm hỏng một mục nhập làm hỏng việc lập chỉ mục từ thời điểm đó:

b = ['a', ' b', 'c ', ' d ']

for i, s in enumerate(b):
    if s.strip() != b[i]:  # leading or trailing whitespace?
        del b[i]

print(b)  # -> ['a', 'c ']  # WRONG!

(Kết quả là sai vì nó không xóa tất cả các mục cần có.)

Cập nhật

Vì đây là một câu trả lời khá phổ biến, đây là cách xóa hiệu quả các mục "tại chỗ" (mặc dù đó không chính xác là câu hỏi):

b = ['a',' b', 'c ', ' d ']

b[:] = [entry for entry in b if entry.strip() == entry]

print(b)  # -> ['a']  # CORRECT

Xem cách xóa các mục khỏi danh sách trong khi lặp lại ?.

Sửa đổi danh sách trong khi lặp lại nó trong Python #

Để sửa đổi danh sách trong khi lặp lại nó:

  1. Sử dụng danh sách hiểu để lặp lại trong danh sách.
  2. Kiểm tra xem mỗi phần tử đáp ứng một điều kiện và trả về kết quả.
  3. Sử dụng Danh sách cắt để gán kết quả cho danh sách ban đầu.

Copied!

my_list = [5, 11, 25, 7, 30] for item in my_list.copy(): if item <= 10: my_list.remove(item) print(my_list) # 👉️ [11, 25, 30]

Chúng tôi đã sử dụng một danh sách hiểu để sửa đổi danh sách trong khi lặp lại.

Copied!

my_list = [5, 11, 25, 7, 30] # 👇️ [5, 11, 25, 7, 30] print(my_list.copy())

Danh sách các hệ thống được sử dụng để thực hiện một số hoạt động cho mọi yếu tố hoặc chọn một tập hợp con của các phần tử đáp ứng một điều kiện.

Chúng tôi đã sử dụng cú pháp

a[:] = [s.strip() for s in a]
9 để có được một lát đại diện cho toàn bộ danh sách, vì vậy chúng tôi có thể gán trực tiếp cho biến.

Slice

a[:] = [s.strip() for s in a]
9 đại diện cho toàn bộ danh sách, vì vậy khi chúng tôi sử dụng nó ở phía bên trái, chúng tôi đang gán cho toàn bộ danh sách.

Copied!

my_list = [5, 11, 25, 7, 30] for item in my_list.copy(): if item <= 10: my_list.remove(item) print(my_list) # 👉️ [11, 25, 30]

Cách tiếp cận này thay đổi nội dung của danh sách ban đầu.

Nếu bạn không muốn thay đổi nội dung của danh sách ban đầu, hãy sử dụng danh sách hiểu để tạo danh sách mới.

Copied!

my_list = [5, 11, 25, 7, 30] for index, item in enumerate(my_list): if item <= 10: my_list[index] = 10 print(my_list) # 👉️ [10, 11, 25, 10, 30]

Chúng tôi lặp lại trong danh sách, kiểm tra xem mỗi mục lớn hơn 10 và trả về kết quả.

Danh sách mới chỉ bao gồm các yếu tố đáp ứng điều kiện.

Ví dụ kiểm tra xem mục danh sách hiện tại có nhỏ hơn hoặc bằng

a[:] = [s.strip() for s in a]
5 không và nếu điều kiện được đáp ứng, mục sẽ được đặt thành
a[:] = [s.strip() for s in a]
5.

Chúng tôi không xóa hoặc thêm các mục vào danh sách trong khi lặp lại, vì vậy việc tạo một bản sao không cần thiết.

Ngoài ra, bạn có thể sử dụng một danh sách hiểu.

Sửa đổi danh sách trong khi lặp lại nó bằng cách sử dụng danh sách hiểu #

Để sửa đổi danh sách trong khi lặp lại nó:

  1. Sử dụng danh sách hiểu để lặp lại trong danh sách.
  2. Kiểm tra xem mỗi phần tử đáp ứng một điều kiện và trả về kết quả.
  3. Sử dụng Danh sách cắt để gán kết quả cho danh sách ban đầu.

Copied!

my_list = [5, 11, 25, 7, 30] my_list[:] = [item for item in my_list if item > 10] print(my_list) # 👉️ [11, 25, 30]

Chúng tôi đã sử dụng một danh sách hiểu để sửa đổi danh sách trong khi lặp lại.

Danh sách các hệ thống được sử dụng để thực hiện một số hoạt động cho mọi yếu tố hoặc chọn một tập hợp con của các phần tử đáp ứng một điều kiện.

Chúng tôi đã sử dụng cú pháp

a[:] = [s.strip() for s in a]
9 để có được một lát đại diện cho toàn bộ danh sách, vì vậy chúng tôi có thể gán trực tiếp cho biến.

Copied!

my_list = [5, 11, 25, 7, 30] print(my_list[:]) # 👉️ [5, 11, 25, 7, 30]

Slice

a[:] = [s.strip() for s in a]
9 đại diện cho toàn bộ danh sách, vì vậy khi chúng tôi sử dụng nó ở phía bên trái, chúng tôi đang gán cho toàn bộ danh sách.

Cách tiếp cận này thay đổi nội dung của danh sách ban đầu.

Nếu bạn không muốn thay đổi nội dung của danh sách ban đầu, hãy sử dụng danh sách hiểu để tạo danh sách mới.

a[:] = [s.strip() for s in a]
0

Chúng tôi lặp lại trong danh sách, kiểm tra xem mỗi mục lớn hơn 10 và trả về kết quả.

Danh sách mới chỉ bao gồm các yếu tố đáp ứng điều kiện.

Danh sách ban đầu vẫn không thay đổi.

Chúng ta có thể sửa đổi một danh sách trong khi lặp lại Python không?

Danh sách. Phương thức sao chép trả về một bản sao nông của đối tượng mà phương thức được gọi. Điều này là cần thiết bởi vì chúng tôi không được phép sửa đổi nội dung của một danh sách trong khi lặp lại nó. Tuy nhiên, chúng tôi có thể lặp lại một bản sao của danh sách và sửa đổi nội dung của danh sách ban đầu.we aren't allowed to modify a list's contents while iterating over it. However, we can iterate over a copy of the list and modify the contents of the original list.

Tôi có thể sửa đổi một danh sách trong khi lặp lại không?

Bởi vì bạn lặp lại một bản sao của danh sách, bạn có thể sửa đổi danh sách ban đầu mà không làm hỏng trình lặp.you can modify the original list without damaging the iterator.

Bạn có thể sửa đổi một danh sách trong khi trong một vòng lặp không?

Bạn không thể sử dụng vòng lặp For-in để sửa đổi danh sách vì biến lặp, (mục trong ví dụ của bạn), chỉ giữ giá trị từ danh sách của bạn và không trực tiếp trỏ đến mục danh sách cụ thể đó.Vì vậy, bạn có thể sửa đổi mục theo bất kỳ cách nào bạn thích mà không ảnh hưởng đến danh sách. because the iteration variable, ( item in your example), is only holding the value from your list and not directly pointing to that particular list item. So, you can modify item in any way you like without affecting the list.

Làm thế nào để bạn sửa đổi một danh sách trong Python?

Liệt kê trong Python là các loại có thể thay đổi, có nghĩa là nó có thể được thay đổi sau khi gán một số giá trị.Danh sách tương tự như các mảng trong các ngôn ngữ lập trình khác ...
Thay đổi phần tử đầu tiên mylist [0] = value ..
Thay đổi phần tử thứ ba mylist [2] = value ..
Thay đổi phần tử thứ tư mylist [3] = value ..