Pythonの配列定義方法を詳しく紹介

高洛峰
リリース: 2017-03-06 14:01:49
オリジナル
2168 人が閲覧しました

この記事の例では、Python の配列定義方法について説明します。参考のために皆さんと共有してください。詳細は次のとおりです:

Python には配列のデータ構造はありませんが、リストは次のような配列に非常に似ています:

a=[0,1,2]
ログイン後にコピー

現時点では: a[0]=0、a[1] =1、a[2]=2 ですが、配列 a を 0 から 999 まで定義したい場合はどうすればよいでしょうか?という疑問が生じます。 = range(0, 1000) を通して。または、a = range(1000) として省略し、長さ 1000 の a を定義する場合、初期値がすべて 0 の場合、a = [0 for x in range(0, 1000)]

以下は 2 次元配列の定義です:

直接定義:

a=[[1,1],[1,1]]
ログイン後にコピー

これは、初期値 0 の 2*2 2 次元配列を定義します。

間接定義:

a=[[0 for x in range(10)] for y in range(10)]
ログイン後にコピー

これは、初期値 0 の 10*10 の 2 次元配列を定義します。

リテラル 2 次元配列のより簡単な方法もあります。

b = [[0]*10]*10
ログイン後にコピー

初期値 0 で 10*10 の 2 次元配列を定義します。

a=[[0 for x in range(10)] for y in range(10)] と比較します。 print a==b の結果は True です。

しかし、a の代わりに b の定義方法を使用した後、これまで正常に動作していたプログラムも異常をきたしました。注意深く分析した結果、違いが見つかりました:

a[0][0]=1 の場合、 a[0][0 ] は 1 で、その他はすべて 0 です。

b[0][0]=1の場合、a[0][0]、a[1][0]、a[9,0]はすべて1になります。

これは、大きな配列内の 10 個の小さな 1 次元データがすべて同じ参照を持つ、つまり同じアドレスを指していることを示しています。
したがって、 b = [[0]*10]*10 は従来の 2 次元配列に準拠しません。

同時にテストした後: c=[0]*10 の定義は、上記の同じ参照の問題がなければ、c=[0 for x in range(10)] と同じ効果があると推定されます。配列 c の定義は値型 Multiply で、前の b は 1 次元配列が参照であるため、型の乗算を使用しています (C# の値型と参照型を借用しています。適切かどうかはわかりません)。

Python 配列の定義方法と関連記事の詳細については、PHP 中国語 Web サイトに注目してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート