如果假设循环列表结构,当删除列表的最后一个元素时,要删除的下一个元素不再是剩余列表中的第一个元素,而是第二个元素.从而,
L = range(100)
st1=len(L)%2
st2=0
while len(L)>1:
del L[st2::2]
st2=(st1+st2)%2
st1=len(L)%2
print L
应该是正确的.
结果是
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99]
[3, 7, 11, 15, 19, 23, 27, 31, 35, 39, 43, 47, 51, 55, 59, 63, 67, 71, 75, 79, 83, 87, 91, 95, 99]
[7, 15, 23, 31, 39, 47, 55, 63, 71, 79, 87, 95]
[7, 23, 39, 55, 71, 87]
[7, 39, 71]
[7, 71]
[71]