Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中反转列表的特定部分_Python_List_Slice - Fatal编程技术网

在Python中反转列表的特定部分

在Python中反转列表的特定部分,python,list,slice,Python,List,Slice,我正在尝试编写一个函数,它将接收一个列表,并返回一个包含偶数和奇数索引之间的反转元素的列表。例如: 知识产权:[1,2,3,4] 作品:[2,1,4,3] 我不明白为什么会出现索引器错误:列表索引超出范围错误,代码如下: 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_l

我正在尝试编写一个函数,它将接收一个列表,并返回一个包含偶数和奇数索引之间的反转元素的列表。例如:

知识产权:[1,2,3,4]

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

我不明白为什么会出现
索引器错误:列表索引超出范围
错误,代码如下:

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]

您可以为此使用内置函数和切片:

from itertools import chain

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

如果您不想使用内置函数。当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

如果您不想使用内置函数。当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


你想要这样的结局吗:[2,1,4,3]?是的!为了清楚起见,我将编辑@uzair for循环将进行多少次迭代(如果没有错误发生)以及迭代后x和y将具有哪个值?正确,但您的循环正在迭代
len(list)
次……另外,不要对变量使用内置类型名(
list
);你覆盖了它们的功能,使它们无法使用。你想要这样的最终结果吗:[2,1,4,3]?是的!为了清楚起见,我将编辑@uzair for循环将进行多少次迭代(如果没有错误发生)以及迭代后x和y将具有哪个值?正确,但您的循环正在迭代
len(list)
次……另外,不要对变量使用内置类型名(
list
);您覆盖了它们的功能并使其不可用。请注意,如果列表长度为奇数,则此操作将不起作用(但您自己的解决方案也不起作用,并且也不清楚是否应支持此情况以及输出结果是什么…)兄弟,我不会处理奇数长度的列表。你也需要对奇数列表进行一点修正。请注意,如果你的列表有奇数长度,这将不起作用(但你自己的解决方案也不起作用,而且也不清楚是否应该支持这种情况,以及输出应该是什么…)兄弟,我不会处理奇数长度的列表。你也需要对奇数列表进行一些修复。使用丑陋的
列表有什么用呢?
而不是普通的
列表
?两者都是一样的。根据python文档,len()方法总是有效的。使用丑陋的
列表是怎么回事?
而不是普通的
len(列表)
?两者都是一样的。根据python文档的说法,_len__()方法总是有效的。