簡體   English   中英

反轉 Python 中列表的特定切片

[英]Reverse a specific slice of a list in Python

我正在嘗試編寫一個 function ,它將接收一個列表並將返回一個包含偶數和奇數索引之間的反轉元素的列表。 例如:

IP:[1,2,3,4]

操作:[2,1,4,3]

我不明白為什么會出現IndexError: list index out of range錯誤,代碼如下:

def mixed(list): 
 
  x = 0
  y = 2
  l = []

  for element in list: 
    mod_list = list[x:y]
    l.append(mod_list[1])
    l.append(mod_list[0]
    x += 2
    y += 2

  return l

l.append(mod_liste[1])似乎是問題所在......

您可以為此使用內置函數和切片:

from itertools import chain

L = [1,2,3,4]
list(chain(*zip(L[1::2],L[::2]))) # [2,1,4,3]

如果您不想使用內置 function。 當 y 大於列表長度時,讓你的循環停止。 檢查奇數列表。

def mixed(list):

x = 0
y = 2
l = []

for element in list:
    mod_list = list[x:y]
    l.append(mod_list[1])
    l.append(mod_list[0])
    x += 2
    y += 2
    if y > list.__len__() and list.__len__()%2 == 0:
        break
    elif y > list.__len__() and list.__len__()%2 != 0:
        l.append(list[y-2])
        break

return l

暫無
暫無

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

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