目录
Remove list elements in a for loop in Python
在 Python 中的 for 循环中删除列表元素
要在 for 循环中删除列表元素:
- 使用
for
循环迭代列表的副本。 - 检查每个项目是否满足条件。
- 使用该
list.remove()
方法删除满足条件的项目。
主程序
my_list = [22, 33, 66, 77, 99] for item in my_list.copy(): if item < 50: my_list.remove(item) print(my_list) # 👉️ [66, 77, 99]
我们使用该list.copy()
方法来获取列表的副本。
主程序
my_list = [22, 33, 66, 77, 99] print(my_list.copy()) # 👉️ [22, 33, 66, 77, 99]
list.copy方法返回调用该方法的对象的浅表副本。
这是必要的,因为我们不允许在迭代列表时从列表中删除项目。
但是,我们可以遍历列表的副本并从原始列表中删除项目。
主程序
my_list = [22, 33, 66, 77, 99] for item in my_list.copy(): if item < 50: my_list.remove(item) print(my_list) # 👉️ [66, 77, 99]
在循环中的每次迭代中for
,我们检查当前项是否小于
50
并删除满足条件的元素。
您可能还会看到使用my_list[:]
语法通过列表切片获取列表的浅表副本的示例。
主程序
my_list = [22, 33, 66, 77, 99] for item in my_list[:]: if item < 50: my_list.remove(item) print(my_list) # 👉️ [66, 77, 99]
我们使用my_list[:]
语法来获取表示整个列表的切片。
主程序
my_list = [22, 33, 66, 77, 99] print(my_list[:]) # 👉️ [22, 33, 66, 77, 99]
这种方法实现了与使用方法相同的结果
list.copy()
,它创建了我们可以迭代的列表的浅表副本。通常,该list.copy()
方法比使用表示整个列表的切片更具可读性。
这是另一个例子。
主程序
my_list = [None, 22, 33, None, 66, 77, None, 99] for item in my_list.copy(): if item is None: my_list.remove(item) print(my_list) # 👉️ [22, 33, 66, 77, 99]
我们使用循环在遍历列表时从列表for
中删除所有值。None
在循环中从列表中删除项目时要注意的最重要的事情for
是使用list.copy()
方法迭代列表的副本。
如果您尝试遍历原始列表并从中删除项目,您可能会遇到难以定位的错误。
或者,您可以使用列表理解。
在 Python 中迭代时从列表中删除项目
使用列表理解在迭代时从列表中删除项目,例如
new_list = [item for item in my_list if item > 100]
。列表理解将返回一个新列表,该列表仅包含与条件匹配的元素。
主程序
# ✅ Remove items from a List while iterating my_list = [77, 105, 123, 88, 199] new_list = [item for item in my_list if item > 100] print(new_list) # 👉️ [105, 123, 199] # --------------------------------------------- # ✅ Remove items from a list while iterating using a for loop for item in my_list.copy(): if item <= 100: my_list.remove(item) print(my_list) # 👉️ [105, 123, 199]
我们使用列表理解在迭代时从列表中删除项目。
列表推导用于对每个元素执行某些操作或选择满足条件的元素子集。
在每次迭代中,我们检查当前项是否大于100
并返回结果。
新列表将只包含大于 的值100
。
示例中的列表理解不会改变原始列表。
如果您需要改变原始列表,请分配给代表整个列表的切片。
要在迭代时从列表中删除项目:
- 使用列表理解来遍历列表。
- 检查每个元素是否满足条件并返回结果。
- 使用列表切片将结果分配给原始列表。
主程序
my_list = [77, 105, 123, 88, 199] my_list[:] = [item for item in my_list if item > 100] print(my_list) # 👉️ [105, 123, 199]
我们使用my_list[:]
语法来获取代表整个列表的切片,因此我们可以直接分配给变量。
主程序
my_list = [77, 105, 123, 88, 199] print(my_list[:]) # 👉️ [77, 105, 123, 88, 199]
切片my_list[:]
代表整个列表,所以当我们在左侧使用它时,我们正在分配给整个列表。
这种方法改变了原始列表的内容。