分别用递归和非递归方法删除列表[4,5,2,,5,6,1,5,9,4]中的元素5
时间: 2023-10-02 10:11:25 浏览: 28
递归方法:
```python
def remove_element_recursive(lst, val):
if not lst: # 如果列表为空,直接返回空列表
return []
elif lst[0] == val: # 如果列表的第一个元素是要删除的元素,递归调用函数,去掉第一个元素
return remove_element_recursive(lst[1:], val)
else: # 如果列表的第一个元素不是要删除的元素,递归调用函数,保留第一个元素,并把后面的元素作为参数传入
return [lst[0]] + remove_element_recursive(lst[1:], val)
lst = [4, 5, 2, 5, 6, 1, 5, 9, 4]
val = 5
new_lst = remove_element_recursive(lst, val)
print(new_lst) # 输出 [4, 2, 6, 1, 9, 4]
```
非递归方法:
```python
def remove_element_nonrecursive(lst, val):
new_lst = [] # 新列表
for item in lst: # 遍历原列表
if item != val: # 如果元素不是要删除的元素,加入新列表
new_lst.append(item)
return new_lst
lst = [4, 5, 2, 5, 6, 1, 5, 9, 4]
val = 5
new_lst = remove_element_nonrecursive(lst, val)
print(new_lst) # 输出 [4, 2, 6, 1, 9, 4]
```