繁体   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