最近我了解了列表和for循环,以及命令.pop()
指示并删除列表中的最后一项。
所以我尝试编写一段代码来一项一项地删除列表中的最后一项,直到只剩下一项。
代码是:
list_A = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
for i in list_A:
print(list_A.pop())
if 'c' not in list_A:
break
print("job done.")
python 3.6 的输出给了我这个:
/Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6
j
i
h
g
f
job done.
正如你所看到的,它确实有效,但是只有效了一半?
我期待着:
j
i
h
g
f
e
d
c
job done
我的意思是,如果它返回一些错误,我会更舒服,这意味着代码不正确。但为什么它有效,但没有完全通过呢?
您在迭代列表时会改变列表。
您可以使用while
循环执行此操作:
list_A = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
while 'c' in list_A:
print(list_A.pop())
print('job done')
Output:
j
i
h
g
f
e
d
c
job done
更有效的方法是确定哨兵字符的第一个实例的索引,然后删除它和列表的其余部分(尽管字符在删除时不会打印):
try:
pos = list_A.index('c')
list_A[:] = list_A[:pos]
# del list_A[pos:] # more efficient alternative suggested by @ShadowRanger
except ValueError as e:
pass
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)