2017-04-09 9 views
-2

私はこのリストのリストを持っており、それをリストの対称リストに変換したいと思います。私は何をすべきか?Python-リストデータのnxnリストの半分を持つリストの対称リストを生成する

[[0, 8, 4, 10, 12, 9, 15, 8, 11, 5, 9, 4, 10], 
    [0, 0, 7, 6, 8, 6, 7, 10, 12, 9, 8, 7, 5], 
    [0, 0, 0, 7, 9, 5, 8, 5, 4, 8, 6, 10, 8], 
    [0, 0, 0, 0, 6, 11, 5, 9, 8, 12, 11, 6, 9], 
    [0, 0, 0, 0, 0, 7, 9, 6, 9, 8, 4, 11, 10], 
    [0, 0, 0, 0, 0, 0, 10, 4, 3, 10, 6, 5, 7], 
    [0, 0, 0, 0, 0, 0, 0, 10, 9, 8, 5, 9, 10], 
    [0, 0, 0, 0, 0, 0, 0, 0, 11, 5, 9, 6, 7], 
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 11, 11, 6], 
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7, 5], 
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 7], 
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9], 
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]] 
+1

リストを対称リストにする方法を指定していません。それは明らかではない。対角線上の要素を対角線の下に反映させますか? –

+2

あなたは実際にあなたが望む出力を掲示して、それまで解決していたプロセスを考えて解決することができますか? –

答えて

1

これは、あなたが「対称」によって何を意味するか、あなたがnumpyを使用して行うことができている場合は、次の

ベースのPythonを使用して
import numpy as np 

m = np.array([[0, 8, 4, 10, 12, 9, 15, 8, 11, 5, 9, 4, 10], 
    [0, 0, 7, 6, 8, 6, 7, 10, 12, 9, 8, 7, 5], 
    [0, 0, 0, 7, 9, 5, 8, 5, 4, 8, 6, 10, 8], 
    [0, 0, 0, 0, 6, 11, 5, 9, 8, 12, 11, 6, 9], 
    [0, 0, 0, 0, 0, 7, 9, 6, 9, 8, 4, 11, 10], 
    [0, 0, 0, 0, 0, 0, 10, 4, 3, 10, 6, 5, 7], 
    [0, 0, 0, 0, 0, 0, 0, 10, 9, 8, 5, 9, 10], 
    [0, 0, 0, 0, 0, 0, 0, 0, 11, 5, 9, 6, 7], 
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 11, 11, 6], 
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7, 5], 
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 7], 
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9], 
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]) 

sym = m + m.transpose() 

sym.tolist() 

#  [[ 0, 8, 4, 10, 12, 9, 15, 8, 11, 5, 9, 4, 10], 
#  [ 8, 0, 7, 6, 8, 6, 7, 10, 12, 9, 8, 7, 5], 
#  [ 4, 7, 0, 7, 9, 5, 8, 5, 4, 8, 6, 10, 8], 
#  [10, 6, 7, 0, 6, 11, 5, 9, 8, 12, 11, 6, 9], 
#  [12, 8, 9, 6, 0, 7, 9, 6, 9, 8, 4, 11, 10], 
#  [ 9, 6, 5, 11, 7, 0, 10, 4, 3, 10, 6, 5, 7], 
#  [15, 7, 8, 5, 9, 10, 0, 10, 9, 8, 5, 9, 10], 
#  [ 8, 10, 5, 9, 6, 4, 10, 0, 11, 5, 9, 6, 7], 
#  [11, 12, 4, 8, 9, 3, 9, 11, 0, 9, 11, 11, 6], 
#  [ 5, 9, 8, 12, 8, 10, 8, 5, 9, 0, 6, 7, 5], 
#  [ 9, 8, 6, 11, 4, 6, 5, 9, 11, 6, 0, 10, 7], 
#  [ 4, 7, 10, 6, 11, 5, 9, 6, 11, 7, 10, 0, 9], 
#  [10, 5, 8, 9, 10, 7, 10, 7, 6, 5, 7, 9, 0]] 
+0

ありがとうございます。 Btw、リストをリストに戻す方法を知っていますか? – user02

+0

編集された回答を参照してください。 –

+0

リストのリストを直接操作するよりも、これを明確にしてください。 –

0

あなたはこのようにそれを行うことができます。そして、

AT = [list(col) for col in zip(*A)] 

B = [r[:i]+s[i:] for i,(r,s) in enumerate(zip(AT,A))] 

>>> for r in B: print(r) 

[0, 8, 4, 10, 12, 9, 15, 8, 11, 5, 9, 4, 10] 
[8, 0, 7, 6, 8, 6, 7, 10, 12, 9, 8, 7, 5] 
[4, 7, 0, 7, 9, 5, 8, 5, 4, 8, 6, 10, 8] 
[10, 6, 7, 0, 6, 11, 5, 9, 8, 12, 11, 6, 9] 
[12, 8, 9, 6, 0, 7, 9, 6, 9, 8, 4, 11, 10] 
[9, 6, 5, 11, 7, 0, 10, 4, 3, 10, 6, 5, 7] 
[15, 7, 8, 5, 9, 10, 0, 10, 9, 8, 5, 9, 10] 
[8, 10, 5, 9, 6, 4, 10, 0, 11, 5, 9, 6, 7] 
[11, 12, 4, 8, 9, 3, 9, 11, 0, 9, 11, 11, 6] 
[5, 9, 8, 12, 8, 10, 8, 5, 9, 0, 6, 7, 5] 
[9, 8, 6, 11, 4, 6, 5, 9, 11, 6, 0, 10, 7] 
[4, 7, 10, 6, 11, 5, 9, 6, 11, 7, 10, 0, 9] 
[10, 5, 8, 9, 10, 7, 10, 7, 6, 5, 7, 9, 0] 
0

これは、サブリスト要素jサブリストが必要ですか?

x=[[0, 8, 4, 10, 12, 9, 15, 8, 11, 5, 9, 4, 10], 
[0, 0, 7, 6, 8, 6, 7, 10, 12, 9, 8, 7, 5], 
[0, 0, 0, 7, 9, 5, 8, 5, 4, 8, 6, 10, 8], 
[0, 0, 0, 0, 6, 11, 5, 9, 8, 12, 11, 6, 9], 
[0, 0, 0, 0, 0, 7, 9, 6, 9, 8, 4, 11, 10], 
[0, 0, 0, 0, 0, 0, 10, 4, 3, 10, 6, 5, 7], 
[0, 0, 0, 0, 0, 0, 0, 10, 9, 8, 5, 9, 10], 
[0, 0, 0, 0, 0, 0, 0, 0, 11, 5, 9, 6, 7], 
[0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 11, 11, 6], 
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7, 5], 
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 7], 
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9], 
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]] 

reversex = x[::-1] 
for l in reversex: 
    print (l) 

[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9] 
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 7] 
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7, 5] 
[0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 11, 11, 6] 
[0, 0, 0, 0, 0, 0, 0, 0, 11, 5, 9, 6, 7] 
[0, 0, 0, 0, 0, 0, 0, 10, 9, 8, 5, 9, 10] 
[0, 0, 0, 0, 0, 0, 10, 4, 3, 10, 6, 5, 7] 
[0, 0, 0, 0, 0, 7, 9, 6, 9, 8, 4, 11, 10] 
[0, 0, 0, 0, 6, 11, 5, 9, 8, 12, 11, 6, 9] 
[0, 0, 0, 7, 9, 5, 8, 5, 4, 8, 6, 10, 8] 
[0, 0, 7, 6, 8, 6, 7, 10, 12, 9, 8, 7, 5] 
[0, 8, 4, 10, 12, 9, 15, 8, 11, 5, 9, 4, 10] 
関連する問題