2024-04-26 09:18:00 发布
网友
我将如何迭代从1到100的列表,删除从第一个元素开始的所有其他元素,然后重复该步骤,直到列表中只剩下一个元素。我是必须使用循环链表,还是可以只使用循环和条件语句来完成?在
这会一次又一次地删除其他元素,直到只剩下一个
>>> L = range(100) # for Python3, use L = list(range(100)) >>> while len(L) > 1: ... del L[::2] ... >>> L [63]
我不知道“循环列表”是什么意思,但也许需要修改一下
如果L的长度是奇数,len(L)%2表示del L[1::2]
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}$如果L的长度是奇数,
len(L)%2
表示del L[1::2]
或者如果你想看看发生了什么:
使用Python方便的slice语法如何:
{cd1>列表中的每个元素都是另一个元素。在
编辑:事实上,我对循环约束这件事很困惑,但是如果它是由ysakamoto准确记录的,那么也许可以看看gnibbler的答案。在
如果采用循环列表结构,则当删除列表的最后一个元素时,下一个要删除的元素不再是剩余列表中的第一个元素,而是第二个元素。因此
应该是正确的。在
结果是
^{pr2}$相关问题 更多 >
编程相关推荐