您能使代码1)变得比以前更简单吗?
或者也许有更好的方法?
我写了这两个非常简单的代码,只是为了看清楚差异。
从我的角度来看,代码1)看上去比2)更清晰,尤其是在循环实现更多内容时,例如字典列表。
1)用于拉链
shopping_list =['bananas', 'car', 'rum', 'cat', 'meat', 'jelly']
for i, item in zip(range(len(shopping_list)-2, -1, -1), shopping_list):
print(i, item)
if item == 'cat':
shopping_list.pop(i)
print()
2)仅用于
shopping_list =['bananas', 'car', 'rum', 'cat', 'meat', 'jelly']
for i in range(len(shopping_list)-1, -1, -1):
print(i, shopping_list[i])
if shopping_list[i] == 'cat':
shopping_list.pop(i)
循环的结果是:
['bananas', 'rum', 'meat', 'jelly']
答案 0 :(得分:1)
您不需要修改原始列表即可删除不符合条件的单词,而这似乎是前两种方法中要做到的。
相反,您可以使用filter根据条件word != 'cat'
删除元素
shopping_list =['bananas', 'car', 'rum', 'cat', 'meat', 'jelly']
print(list(filter(lambda x: x != 'cat', shopping_list)))
输出将为
['bananas', 'car', 'rum', 'meat', 'jelly']
答案 1 :(得分:1)
您的解决方案不好,因为不必要的复杂性,并且因为您在循环访问列表时修改了列表(这很棘手)。
使用list comprehensions(如注释中所述):
shopping_list = [w for w in shopping_list if w != 'cat']
或使用filter
方法:
shopping_list = list(filter(lambda x: x != 'cat', shopping_list))