簡體   English   中英

從 Python 的列表中刪除第 n 個元素

[英]Remove evey nth element from list in Python

問題:

假設你有一個列表:

  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]

這是一種方法。

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)
  

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM