在Python中从列表中删除每个元素

2024-06-01 00:18:19 发布

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

问题:

Suppose you have a list:

  1. Delete every nth element.
  2. If the next nth element exceeds the list's length, modulate it.
  3. Do it till one element left.

例如:

a = [1, 2, 3, 4, 5, 6, 7, 8]
period = 3

对于每个迭代,a必须是:

a = [1, 2, 3, 4, 5, 6, 7, 8]
a = [1, 2, 4, 5, 6, 7, 8]
a = [1, 2, 4, 5, 7, 8]
a = [2, 4, 5, 7, 8]
a = [2, 4, 7, 8]
a = [4, 7, 8]
a = [4, 7]
a = [7]

我必须知道

我编辑这篇文章是因为我忘了添加我做过的内容,所以没有成功

以下是我的尝试:

a = [1, 2, 3, 4, 5, 6, 7, 8]
periyot = 3


for it, i in enumerate(range(periyot, periyot * len(a), periyot), start=1):
    index = (i - it) % len(a)
    del a[index % len(a)]
    print(a)

返回:

[1, 2, 4, 5, 6, 7, 8]
[1, 2, 4, 5, 7, 8]
[2, 4, 5, 7, 8]
[2, 4, 5, 8] # I'm off from here
[2, 4, 8]
[4, 8]
[8]

Tags: theyouindexlenifhaveitelement
1条回答
网友
1楼 · 发布于 2024-06-01 00:18:19

这是一种方法

a = [1, 2, 3, 4, 5, 6, 7, 8]
period = 3

idx = (period - 1)
while len(a) > 1:
  idx = idx % len(a)
  del a[idx]
  idx += (period - 1)
  print(a)
  

相关问题 更多 >