首页 > 解决方案 > 从 Python 列表中删除第 n 个元素

问题描述

问题:

假设你有一个列表:

  1. 删除每第 n 个元素。
  2. 如果下一个第 n 个元素超过列表的长度,则对其进行调制。
  3. 这样做直到剩下一个元素。

例子:

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]

标签: python

解决方案


这是一种方法。

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)
  

推荐阅读