1

マトリックスを単一のリストに結合しようとしています。検索で見つけ続けるツリートラバーサル / 0(n*expression) に頭を悩ませようとしました。この問題は私が思っているほど難しいとは思いません!?

# 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', など)]

4

2 に答える 2

2

要するに、行列を転置するということです。これはで行うことができます

zip(*args)

これを取得したら、各行を結合して新しい整数を形成し、これらの値を新しいリストに配置できます。

def myFun(*args):
    return [int(''.join(map(str, l))) for l in zip(*args)]
于 2012-10-28T02:34:40.593 に答える
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']
于 2012-10-28T02:36:01.640 に答える