Python列表重新排列
我目前正在尝试将一段代码从Python列表重新排列,python,python-3.x,Python,Python 3.x,我目前正在尝试将一段代码从Python2移植到Python3,该代码中的一个函数返回一个表示表的元组列表,但由于这些值是从多个tkinter列表框中获取的,因此分两步执行: 依次从每个列表框中获取完整的列 将列表从每列一个元组反转为每行一个元组 在Python2中,执行此操作的行是: apply(map, [None] + result) 我还不知道这是如何工作的,也不知道如何将它移植到,我已经浏览了文档,以及我所看到的关于如何将其移植到Python3以应用或映射的所有内容实际上并没有实现我想
Python2
移植到Python3
,该代码中的一个函数返回一个表示表的元组列表,但由于这些值是从多个tkinter
列表框中获取的,因此分两步执行:
依次从每个列表框中获取完整的列
将列表从每列一个元组反转为每行一个元组
在Python2
中,执行此操作的行是:
apply(map, [None] + result)
我还不知道这是如何工作的,也不知道如何将它移植到,我已经浏览了文档,以及我所看到的关于如何将其移植到Python3
以应用或映射的所有内容实际上并没有实现我想要的
我使用的是python3.3
,由于列的数量不是固定的,因此最好使用灵活的答案
例如:
[("c1r1","c1r2","c1r3"),("c2r1","c2r2","c2r3"),("c3r1","c3r2","c3r3")]
需要转到:
[("c1r1","c2r1","c3r1"),("c1r2","c2r2","c3r2"),("c1r3","c2r3","c3r3")]
使用第一个参数None
调用map
,然后将3个元组作为剩余参数。相当于:
>>> map(None, *result)
[('c1r1', 'c2r1', 'c3r1'), ('c1r2', 'c2r2', 'c3r2'), ('c1r3', 'c2r3', 'c3r3')]
但是,对于此操作,您应该使用交叉兼容的zip(*result)
>>> zip(*result)
[('c1r1', 'c2r1', 'c3r1'), ('c1r2', 'c2r2', 'c3r2'), ('c1r3', 'c2r3', 'c3r3')]
在Python3上,如果需要列表,可能需要使用list(zip(*result))
使用第一个参数None
调用map
,然后将3个元组作为剩余参数。相当于:
>>> map(None, *result)
[('c1r1', 'c2r1', 'c3r1'), ('c1r2', 'c2r2', 'c3r2'), ('c1r3', 'c2r3', 'c3r3')]
但是,对于此操作,您应该使用交叉兼容的zip(*result)
>>> zip(*result)
[('c1r1', 'c2r1', 'c3r1'), ('c1r2', 'c2r2', 'c3r2'), ('c1r3', 'c2r3', 'c3r3')]
在Python3上,如果需要列表,您可能需要使用list(zip(*result))
。a在这里非常有用。你有没有试过什么,或者你只是想让别人帮你写代码?已经被弃用,也不要在Python 2中使用它。我真的不想使用它,我已经在代码中的其他地方删除了它,但是我不知道如何在这行中删除它。我认为您的代码片段是无效的——它将产生一个TypeError应用(map,sequence)
相当于map(sequence)
,但map也需要一个函数。例如,map(函数、序列)
。您正在寻找Python 3中的zip(*yourlist)
或list(zip(*yourlist))
。你有没有试过什么,或者你只是想让别人帮你写代码?已经被弃用,也不要在Python 2中使用它。我真的不想使用它,我已经在代码中的其他地方删除了它,但是我不知道如何在这行中删除它。我认为您的代码片段是无效的——它将产生一个TypeErrorapply(map,sequence)
相当于map(sequence)
,但map还需要一个函数。例如,Python3中的map(function,sequence)
。您正在查找zip(*yourlist)
或list(zip(*yourlist))
。可能会添加一条注释,说明Python2中的map
如何将None
作为标识函数,因此map(None,*list)
实际上相当于Python2中的zip(*list)
,但是Python 3中的map
似乎不再接受None
作为函数参数。可以添加一个注释,说明Python 2中的map
如何将None
作为标识函数,因此map(None,*list)
实际上相当于Python 2中的zip(*list)
,但是Python 3中的map
似乎不再接受None
作为函数参数。