我正在做一些练习,我的任务是从字符串中删除第一个数字,直到它是奇数。你知道吗
The function should remove elements from the front of lst until the front of the list is not even. The function should then return lst.
For example if lst started as
[4, 8, 10, 11, 12, 15]
, then delete_starting_evens(lst) should return[11, 12, 15]
.
def delete_starting_evens(lst):
for i in lst:
if i % 2 == 0:
lst.pop(0)
else:
break
return lst
print(delete_starting_evens([4, 8, 6, 6, 6, 10, 11, 12, 15]))
print(delete_starting_evens([4, 8, 10]))
def delete_starting_evens(lst):
for i in lst:
if i % 2 == 0:
lst = lst[1:]
else:
break
return lst
print(delete_starting_evens([4, 8, 6, 6, 6, 10, 11, 12, 15]))
print(delete_starting_evens([4, 8, 10]))`
如果我使用lst = lst[1:]
,代码就可以正常工作,
但是我不明白为什么lst.pop(0)
版本不起作用。它将在几次迭代中工作,但之后就不再流行了。你知道吗
在对列表进行迭代时修改列表通常是一个获得奇怪结果的方法。尝试在每次迭代中打印
lst
和i
,您将看到发生了什么。。。(试着用lst = [2,4,6,8,10,...]
把它弄清楚…)这里有一个安全的方法:
请注意,
pop
会改变列表,而lst = lst[1:]
会重新分配列表。你知道吗如果效率很重要:
相关问题 更多 >
编程相关推荐