按列表中元组的顺序将多个元组列表组合成新的元组列表(python3)

时间:2018-10-10 07:56:15

标签: python python-3.x list tuples

我有多个包含两个值的元组列表,例如:

[('0','2'), ('0','2'), ('1','0')]
[('2','2'), ('0','0'), ('0','2')]
[('0','0'), ('2','1'), ('2','1')]
[('0','2'), ('2','0'), ('0','2')]

我想创建一组新的列表,其中包含元组(按在列表中出现的顺序)。例如,在上面的示例中,我想要的输出将是:

[('0','2'), ('2','2'), ('0','0'), ('0','2')]
[('0','2'), ('0','0'), ('2','1'), ('2','0')]
[('1','0'), ('0','2'), ('2','1'), ('0','2')] 

由于元组没有唯一的键值,而且每个实际列表包含大约500个元组,因此我很难考虑如何解决此问题。列表中的位置是我新分组的重要素质。如果有帮助,每个列表都在文件的新行上。

有人有什么建议吗?

3 个答案:

答案 0 :(得分:8)

通过将简单的zip*一起使用来进行尝试:

a = [
       [('0','2'), ('0','2'), ('1','0')],
       [('2','2'), ('0','0'), ('0','2')],
       [('0','0'), ('2','1'), ('2','1')],
       [('0','2'), ('2','0'), ('0','2')]
    ]


list(zip(*a))

输出将是:

[(('0', '2'), ('2', '2'), ('0', '0'), ('0', '2')),
 (('0', '2'), ('0', '0'), ('2', '1'), ('2', '0')),
 (('1', '0'), ('0', '2'), ('2', '1'), ('0', '2'))]

答案 1 :(得分:0)

也许做这样的事情:

import { Directive, HostListener } from '@angular/core';
import { Location } from '@angular/common';

@Directive({
    selector: '[backButton]'
})
export class BackButtonDirective {
    constructor(private location: Location) { }

    @HostListener('click')
    onClick() {
        this.location.back();
    }
}

答案 2 :(得分:0)

如果不是必须将输出作为元组列表,则也可以使用numpy进行此操作:

import numpy as np
arr = np.transpose([[('0','2'), ('0','2'), ('1','0')],
                [('2','2'), ('0','0'), ('0','2')],
                [('0','0'), ('2','1'), ('2','1')],
                [('0','2'), ('2','0'), ('0','2')]], axes=[1,0,2])

它将返回3D ndarray。