データ構造とAlgorithm_Sparse配列

**

1.スパース配列とは何ですか?

**
回答:スパース配列は、2次元配列要素の水平左、垂直座標、および要素サイズの3つの値を、ある配列の別の配列に格納することです。配列の要素数が比較的少ない場合に適しています。したがって、スパース配列を使用すると、記憶域を大幅に削減できます。

2.具体的な操作手順は、たとえば、スパース配列に変換する必要がある5 * 5の2次元配列で、概略図は次のとおりです。
ここに画像の説明を挿入

2.具体的な手順

  • 1. 2次元配列を1回トラバースして、2次元配列の非ゼロ値の合計、2次元配列の行mおよび列nを取得します。

  • 2.スパース配列の初期化:スパース配列の行数は、ゼロ以外の値に1を加えた数、つまり合計+ 1に等しく、列数は3です。

  • 3.疎配列の割り当て:最初の行の最初の値は2次元配列の行数を表し、列の数とゼロ以外の値の数を表します。

  • 4.スパース配列を取得した後、スパース配列をファイルに保存し、必要に応じて読み取ることができます。

  • 5.スパース配列を復元します。まず、スパース配列の最初の行を読み取って2次元配列を初期化し、次に特定の場所に順番に値を割り当てます。

**

3.コードを書くときに学んだこと:

**
Pythonを使用してforループを実現するには?
回答:範囲(x、y、z)のiに使用:構造。このステートメントでは、iはトラバースする必要があるリストの添え字を表します。xとyを使用してリストの上限と下限を制御し、zを使用して各サイクルの増分を制御します。

for i in  range(0,3,1):
	print("%d,我爱python" % i )

このコードの実行結果は次のとおりです
。1、pythonが大好き
2、pythonが大好き
3、pythonが大好き

Pythonで2次元配列を実装して使用する方法は?
回答:実際、Pythonには配列の概念はありません。実現するには、リスト[]を使用する必要があります。

Sparse_list = [[0 for col in range(m)] for row in range(n)]  
# 其中0为二维数组的初始值,m为列数,n为行数

2次元配列の使用は、Cやjavaなどの他の言語と同じです。値を割り当てるには、リスト名と行クラス座標を使用します。

ファイル操作を使用してスパース配列を格納する方法は?
回答:open関数を使用して、ファイル名と操作許可文字に従ってファイルを開き、ファイルオブジェクトに値を割り当て、ファイルオブジェクトのwritelines()メソッドを使用してファイルを書き込みます。
注:書き込みの最後にファイルを閉じることを忘れないでください。

#将稀疏数组存放到文件中
fo = open("output.txt","w")
for i in range(len(sparse_list)):
    fo.writelines("%3d%3d%3d\n"%(sparse_list[i][0],sparse_list[i][1],sparse_list[i][2]))
fo.close()
print("储存成功!")

ファイル
A からスパース配列に戻す方法 A:基本的には書き込み操作と同じですが、読み取りプロセス中に、スライス操作を使用して各行を特定のデータに切り取り、eval()関数を使用して文字を変換する必要があります文字列は数値に変換され、スパース配列に格納されます。

スライスとeval()関数に不慣れな方は、Baiduを使用できます。ここでは説明しません。

#从文件中读取并打印出來,得到稀疏数组2
sparse_list2 = [[0 for col in range(3)] for row in range(sum+1)]
print("读取的文件为---------")
count = 0
fi = open("output.txt","r")
for line in fi:
    print(line)
    sparse_list2[count][0]=eval(line[0:3])
    sparse_list2[count][1]=eval(line[3:6])
    sparse_list2[count][2]=eval(line[6:9])
    count = count + 1
fi.close()
元の記事を27件公開 賞賛2件 680回の訪問

おすすめ

転載: blog.csdn.net/qq_44273739/article/details/104746060