在Python中,删除列表(list)中的多行可以通过多种方法实现。以下是一些方法:
方法一:使用循环和`pop`函数
```python
def delete_rows(lst, key):
tmp_list = [i for i, row in enumerate(lst) if row == key]
tmp_list.reverse()
for i in tmp_list:
lst.pop(i)
return lst
示例列表
a_list = [['a', '123', '111', 'asd', 'sd'],
['b', '321', '', 'fds', 'sd'],
['c', '345', '', 'zxc', 'sd']]
删除第三列是空字符串的两行
new_list = delete_rows(a_list, '')
print(new_list)
方法二:使用列表推导式和切片
```python
def delete_rows_slice(lst, key):
找到所有需要删除的行的索引
rows_to_delete = [i for i, row in enumerate(lst) if row == key]
从后往前删除这些行
for i in sorted(rows_to_delete, reverse=True):
del lst[i]
return lst
示例列表
a_list = [['a', '123', '111', 'asd', 'sd'],
['b', '321', '', 'fds', 'sd'],
['c', '345', '', 'zxc', 'sd']]
删除第三列是空字符串的两行
new_list = delete_rows_slice(a_list, '')
print(new_list)
方法三:使用`filter`函数
```python
def delete_rows_filter(lst, key):
return list(filter(lambda row: row != key, lst))
示例列表
a_list = [['a', '123', '111', 'asd', 'sd'],
['b', '321', '', 'fds', 'sd'],
['c', '345', '', 'zxc', 'sd']]
删除第三列是空字符串的两行
new_list = delete_rows_filter(a_list, '')
print(new_list)
以上方法都可以删除列表中满足特定条件的行。选择哪一种方法取决于你的具体需求和偏好。