如何使用python删除循环列表中的元素,直到只剩下一个元素?

2024-04-26 09:18:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我将如何迭代从1到100的列表,删除从第一个元素开始的所有其他元素,然后重复该步骤,直到列表中只剩下一个元素。我是必须使用循环链表,还是可以只使用循环和条件语句来完成?在


Tags: 元素列表步骤语句条件链表
3条回答

这会一次又一次地删除其他元素,直到只剩下一个

>>> L = range(100)       # for Python3, use L = list(range(100))
>>> while len(L) > 1:
...     del L[::2]
... 
>>> L
[63]

我不知道“循环列表”是什么意思,但也许需要修改一下

^{pr2}$

如果L的长度是奇数,len(L)%2表示del L[1::2]

或者如果你想看看发生了什么:

>>> L = range(100)
>>> while len(L) > 1:
...     del L[len(L)%2::2]
...     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]
[3, 11, 19, 27, 35, 43, 51, 59, 67, 75, 83, 91, 99]
[3, 19, 35, 51, 67, 83, 99]
[3, 35, 67, 99]
[35, 99]
[99]

使用Python方便的slice语法如何:

while len(best_list_ever) > 1:
    best_list_ever = best_list_ever[1::2]

{cd1>列表中的每个元素都是另一个元素。在

编辑:事实上,我对循环约束这件事很困惑,但是如果它是由ysakamoto准确记录的,那么也许可以看看gnibbler的答案。在

如果采用循环列表结构,则当删除列表的最后一个元素时,下一个要删除的元素不再是剩余列表中的第一个元素,而是第二个元素。因此

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

应该是正确的。在

结果是

^{pr2}$

相关问题 更多 >