任意数量的分配(列表(数字))转换为单个列表

时间:2012-10-28 02:23:59

标签: python matrix

我正在尝试将矩阵合并到一个列表中。我试图用我的头围绕树遍历/ 0(n *表达式)我经常通过搜索找到的东西。我真的不认为这个问题和我要做的一样困难!?

# example of what output should be 
# ('147','258','369')

m = [1,2,3]
n = [4,5,6]
o = [7,8,9]

def myFun(*args):
    return [zip(args[x][i]) for x in args for i in args[x]]

print(myFun(m,n,o))

为了将来参考,使用地图是一种更智能的方法来处理这个庄园中的矩阵吗?我已经读过地图可以将函数应用于每个元素,因此我对使用这样的方法并获得额外的输出持怀疑态度(例如[('471','582','693'等)] < / p>

2 个答案:

答案 0 :(得分:2)

这归结为转置矩阵。这可以通过

完成
zip(*args)

一旦我们有了这个,我们可以连接每一行来形成一个新的整数,并将这些值放在一个新的列表中:

def myFun(*args):
    return [int(''.join(map(str, l))) for l in zip(*args)]

答案 1 :(得分:0)

这是你想要做的吗?

m = [1,2,3]
n = [4,5,6]
o = [7,8,9]

a = zip(m, n, o)  # [(1, 4, 7), (2, 5, 8), (3, 6, 9)]

b = [''.join(map(str, x)) for x in a] # ['147', '258', '369']