重複の可能性:
Python - リストが対称かどうかを判断するアルゴリズム
最初の行が最初の列と同じで、2 番目の行が 2 番目の列と同じであり、要素が同じ場合はブール値の True を返し、そうでない場合は false を返します。リストには、整数または文字列を含めることができます。
def symmetric(my_list):
my_list = [[1, 2, 3],
[2, 3, 4],
[3, 4, 1]]
重複の可能性:
Python - リストが対称かどうかを判断するアルゴリズム
最初の行が最初の列と同じで、2 番目の行が 2 番目の列と同じであり、要素が同じ場合はブール値の True を返し、そうでない場合は false を返します。リストには、整数または文字列を含めることができます。
def symmetric(my_list):
my_list = [[1, 2, 3],
[2, 3, 4],
[3, 4, 1]]
これはPython2で動作します
my_list == map(list, zip(*my_list))
zip(*some_2d_list)
はかなりよく知られているイディオムです。some_2d_list
展開して処理するzip
と、行と列を入れ替える効果があります。
残念ながら、zip はタプルのリストを返すため、それらをリストに変換する必要があります。これが何をするかmap(list, ...)
です
等しいかどうかのテストでは、対角線上にない各ペアを 2 回比較するので、無駄に見えるかもしれませんが、これは C レベルで行われるため、明示的なループを使用して最小数の比較を行うよりもはるかに高速です。
宿題の場合は、おそらくネストされたループを使用することをお勧めします
編集: Python3 ではmap(...)
、マップ オブジェクトを返します。次を使用して Python2 の動作を取得できます。list(map(...))
編集: Python3 では、これの方が優れていると思います
all(i==j for i,*j in zip(my_list ,*my_list))
import numpy as np
# convert the 2d list into an ndarry
x = np.array(my_list)
# test if x is identical to its transpose
isSymmetric = (x.T == x).all()
isSymmetric
その後、結果を伝えます。