Python配列の定義方法

1527 ワード

本論文の例はPython配列定義方法を説明する。皆さんに参考にしてあげます。具体的には以下の通りです。
Pythonには配列のデータ構造がありませんが、リストは配列に似ています。

a=[0,1,2]

この時:a[0]=0、a[1]=1、a[2]=2ですが、一つの問題を引き出します。つまり、配列aが0から999と定義したいなら、どうすればいいですか?この時はa=range(0,1000)で実現するかもしれません。a=range(1000)を省略します。1000長さのaを定義したいなら、初期値は全部0です。a=[0 for x in range(0,1000)]
以下は二次元配列の定義です。
直接定義:

a=[[1,1],[1,1]]

ここでは2*2の1つを定義し、最初は0の2次元配列である。
間接定義:

a=[[0 for x in range(10)] for y in range(10)]

ここでは10*10の最初の0の二次元配列を定義している。
もっと簡単な字義の二次元配列の方法もあります。

b = [[0]*10]*10

10*10の最初の0の二次元配列を定義します。
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の定義を推定すると値タイプが乗算されますが、前のbのタイプが乗算されます。
Pythonに関する詳細について興味がある方は、このサイトのテーマをご覧ください。「Python文字列操作テクニックのまとめ」、「Python入門と階段の経典教程」、「Pythonファイルとディレクトリ操作の概要
ここで述べたように、皆様のPythonプログラムの設計に役に立ちます。