Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.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 - Fatal编程技术网

如何获取列表列表并在python中重新排列它们

如何获取列表列表并在python中重新排列它们,python,list,Python,List,我正在尝试创建一个函数来实现这一点 >>> rearrange_list([1,2,3],[4,5,6]) [[1,4],[2,5],[3,6]] 到目前为止,我得到的是 def rearrange_list(my_list): i = 0 n = 0 new_list = [] for i in range(0, len(my_list[n])): for n in range(0,len(my_list)):

我正在尝试创建一个函数来实现这一点

>>> rearrange_list([1,2,3],[4,5,6])
[[1,4],[2,5],[3,6]]
到目前为止,我得到的是

def rearrange_list(my_list):
    i = 0
    n = 0
    new_list = []
    for i in range(0, len(my_list[n])):
        for n in range(0,len(my_list)):
            new_list += [my_list[n][i]]
            print(new_list)
            n += 1
    return new_list
但此代码返回的是一个列表,而不是 像我希望的那样的列表,我似乎不知道如何制作 函数根据列表中列表的索引输出列表。

使用
zip()

>>> zip([1,2,3], [4,5,6])
[(1, 4), (2, 5), (3, 6)]
或者,对于特定的varargs版本:

>>> lsts = ([1,2,3], [4,5,6])
>>> zip(*lsts)
[(1, 4), (2, 5), (3, 6)]
或者,如果元组不起作用,则将结果映射到列表:

map(list, zip([1,2,3], [4,5,6]))  # Python 2
[list(t) for t in zip([1,2,3], [4,5,6])]  # Python 2 and 3
作为您功能的替代:

def rearrange_list(*my_lists):
    return [list(t) for t in zip(*my_lists)]
像这样使用拉链:

zip(list_a, list_b)
您可以使用和:


请注意,上述函数仅处理两个列表。如果要处理任意数量的列表,可以使用以下方法:

>>> def rearrange_lists(*lsts):
...     return [list(x) for x in zip(*lsts)]
...
>>> rearrange_lists([1,2,3], [4,5,6], [7,8,9])
[[1, 4, 7], [2, 5, 8], [3, 6, 9]]
>>>

zip
应该做你想做的事。虽然它给你一个元组列表,但不是列表。有没有办法把元组变成一个列表?我特别需要它成为一个列表。@agconti-比什么更有效率?如果你是指OP的当前代码,那么是的,它的效率要高得多。内置函数的运行速度比定制函数快得多(好吧,我会说99%的时间,以防有我不知道的异常示例;)。另外,我的解决方案使用了列表理解,这几乎总是比for循环更快。我似乎在最后一点上遇到了一些问题。为什么没有输出?@biogeek:因为你没有打印任何东西
eval.in
不是Python交互式解释器,没有响应。添加一个
print()。它的读法不应该像
list2=['AAAA'、'dddddd'、'GGGG'、'jjjjj']、['BBBB'、'EEEE'、'hhh'、'KKKK']、['CCCC'、'FFFF'、'IIII'、'LLLL']
>>> def rearrange_lists(*lsts):
...     return [list(x) for x in zip(*lsts)]
...
>>> rearrange_lists([1,2,3], [4,5,6], [7,8,9])
[[1, 4, 7], [2, 5, 8], [3, 6, 9]]
>>>