データストレージ
たとえば、プレイヤーが複雑で不親切なコンピューター インターフェイスと対戦する、「User Hostile」というコンピューター ゲームを開発したとします。ここで、このゲームの月次売上を 5 年間にわたって追跡するプログラムを作成する必要があります。または、ハッカー ヒーロー トレーディング カードを在庫する必要があるとします。
すぐに、情報を保存および処理するには単純な基本データ型以上のデータ型が必要であるという結論に達するでしょう。
リスト (配列)
大量のデータを扱いやすくするために、セルのグループには共通の名前が付けられます。このようなセルのグループは 配列と呼ばれます。
配列–これは、同じ種類のメモリ セルのグループであり、並んで配置され、共通の名前が付けられています。グループ内の各セルには一意の番号が付いています。
配列を扱うときは、次の 3 つのタスクを 解決する方法を学ぶ必要があります。
バツ配列に必要なサイズのメモリを割り当てます。
バツ目的のセルにデータを書き込みます。
バツセルからデータを読み取ります。
Python の配列
Python にはそのような配列はありません。代わりに、リストは同じタイプ (同じタイプだけではありません) のオブジェクトのグループ、つまり list タイプのオブジェクトを格納するために使用されます。リストと配列の違いは、リストは動的構造であり、メモリ管理操作 (コンパイラによって行われます) を考慮せずに、プログラムの実行中にサイズを変更 (要素の削除、追加) できることです。
将来、リストを使用した作業を分析するときは、「配列」という単語を使用します。これは、ほとんどの場合、リストはまさに配列の役割で使用されるためです (同じ型のデータを格納します)。
配列の作成
配列が作成されると、メモリ内にスペース (特定の数のセル) が割り当てられます。
1) 配列は要素を列挙するだけで作成できます。
プレ>
A = [1、4、7、12、5]
print(タイプ(A))
プレ>
プログラムが出力 します。
<クラス 'リスト'>
つまり、配列はタイプlist (英語の list から翻訳)のオブジェクトです。
2) 配列は、整数、実数、文字列など、あらゆるタイプのデータで構成できます。
A = [「ヴァシャ」、「ペティア」、「フェディア」]
プレ>
配列を操作するいくつかの方法
3) 配列は「追加」できます。
A = [1, 5] + [25, 7]
プレ>
4) 同一の配列の加算は乗算に置き換えることができます。したがって、次のように、同じ値が入った配列を簡単に作成できます。
A = [0]*10 # 10 要素の配列を作成し、ゼロで埋めます
プレ>
5) 配列は常に「知っている」あなたのサイズ。 len() 関数は、配列のサイズを決定するために使用されます。多くの場合、配列のサイズは別の変数に保存され、異なる配列サイズで動作するようにプログラムを簡単に変更できます。
例
N = 10 # 配列のサイズを変数 N に格納します
A = [0] * N # サイズ N の配列を作成します
print(len(A)) # 配列のサイズを出力します
プレ>
配列のサイズはキーボードから設定できます。
|
配列要素の操作
配列の有用性の多くは、その要素に個別にアクセスできるという事実から生まれます。
これを行う方法は、インデックスを使用して要素に番号を付けることです。
インデックスは、特定の配列要素を指す値です。
配列の要素を参照するには、配列の名前の後に角括弧で囲んだインデックスを指定する必要があります。たとえば、A[1] = 100 のように、インデックス 1 の配列要素に値 100 を書き込むことができます。
覚えておく必要があります!
Python での配列の番号付けはゼロから始まります!
(これは前提条件です。最初から始める必要があります。これは特に覚えておくことが重要です。)
例
x = (A[3] + 5) * A[1] # A[3] と A[1] の値を読み取る
A[0] = x + 6 # 新しい値を A[0] に書き込みます
プレ>
配列要素を操作するプログラムを分析してみましょう。
<プレ>
私は= 1
A = [0] * 5 # 5 つの要素の配列を作成します
A[0] = 23 # 5 つの配列要素のそれぞれに (インデックス 0 ~ 4)
A[1] = 12 # 特定の値を書き込みます
A[2] = 7
A[3] = 43
A[4] = 51
A[2] = A[i] + 2*A[i-1] + A[2*i] # インデックス 2 の要素の値を式の結果に変更します
# i=1 なので、変数 i の値を取得した式に代入します
# 次の式 A[2] = A[1] + 2*A[0] + A[2];
print(A[2] + A[4])
プレ>
実行結果このプログラムでは、インデックス 2 とインデックス 4 の配列の要素の合計値が 116 に等しい という値が画面に表示されます。 例からわかるように、配列の任意の要素にアクセスできます。 。また、さまざまな式を使用して必要な要素番号を計算します (たとえば、プログラム A[i-1] または A[2*i] のように)。このような場合、要素のインデックスは i の値に応じて計算されます。
Python では、配列に負のインデックス値を使用し、配列の末尾から数えることができます。例えば:
A[-1] - 配列の最後の要素
A[-2] - 最後から 2 番目の要素
など
プログラムを分析してみましょう。
N=5
A = [0] * N
x=1
print(A[x - 3]) # 要素 A[-2] にアクセスします
print(A[x - 3 + len(A)]) # 要素 A[3] にアクセス
# これは A[-2] と同じ要素です
A[x + 4] = A[x] + A[2 * (x + 1)] # x を式と計算に代入した後
# 次の行を取得 A[5] = A[1] + A[4]
# A[5] そのような要素は存在しません
# エラー - 配列の範囲外です
プレ>
配列は 5 つの要素で宣言されているため、要素には -5 から 4 までの番号が付けられます。 6 行目のプログラムが存在しない要素 A[5] を参照していることがわかります。
プログラムが配列の範囲を超えていることが 判明しました。
このような場合、通常、プログラムは 実行時エラーでクラッシュします。
|
配列要素の反復
配列を操作する場合、通常、配列のすべての要素を一度に操作する必要があります。
要素を反復処理: 配列のすべての要素をループし、必要に応じて何らかの操作を実行します。
このために、変数を含むループが最もよく使用されます。これは、 0 から N-1 に変化します。ここで、 N は配列の数です。要素 です。
N では、配列の現在のサイズ、つまり N = len(A) を考慮します。
...
範囲 (N) 内の i の場合:
# ここでは A[i] を使用します
...
指定されたループでは、変数 i は値 0、1、2、...、N-1 をとります。 したがって、ループの各ステップで、番号 i を持つ配列の特定の要素にアクセスします。
したがって、A[i] 配列の 1 つの要素で何を行う必要があるかを記述し、これらのアクションをそのようなループ内に配置するだけで十分です。
配列に最初の N の自然数を入れるプログラムを書いてみましょう。つまり、プログラムの最後には配列の要素が等しくなるはずです。
A[0] = 1
A[1] = 2
A[2] = 3
...
A[N - 1] = N
パターンは簡単にわかります。配列要素の値は、要素のインデックスよりも 1 大きくなければなりません。
ループは次のようになります
範囲 (N) 内の i の場合:
A[i] = i + 1
|
リストジェネレーター
Python 言語を使用すると、多くの問題を簡潔かつ確実に解決できます。配列を埋めるための主な可能性をリストしてみましょう。 1) 配列の作成と設定は次のように記述できます。
A = [i for i in range(N)] # N = 5 の場合、配列 A = [0,1,2,3,4]
A = [i*i for i in range(N)] # N = 5 の場合、配列 A = [0,1,4,9,16]
プレ>
for i in range(N) - 0 から N-1 までのすべての i 値をループします。 >
配列の次の要素には、単語 for の前にある値が含まれます (最初の場合は i 、2 番目の場合は i*i . >
次の表記を使用しても同じ結果が得られます。
<プレ>
A = list(range(N)) # N = 5、配列 A = [0,1,2,3,4]
2) すべての値ではなく、特定の条件を満たす値のみを配列に書き込むことができます。
例
0 から 9 までの範囲内のすべての偶数を配列に入力します。
A = [i for i in range(10)
if i % 2 == 0]
print(*A) # 配列 A = [0,2,4,6,8]
この場合、配列の長さが 10 未満になることを理解する必要があります。
3) キーボードから 1 行に 1 つずつ配置された要素を配列に埋めるには、2 つの方法があります。
<テーブル align="center" border="1" cellpadding="1" cellpacing="1" style="width:85%">
<本体>
N=5
A = [0]*5
範囲 (N) 内の i の場合:
A[i] = int(input())
|
<プレ>
A = [int(input()) for i in range(N)]
# ループが繰り返されるたびに、
# 入力文字列が変換される
# を整数に変換します (int を使用)
# そしてこの数値が配列に追加されます
|
表>
4) すべて同じ行にある要素をキーボードから配列に入力するのは、少し複雑です。文字列を読み取り、要素に分割し、各要素を整数に変換する必要があります。
s = input().split()
A = [int(i) for i in s]
プレ>
とか、ぐらい
A = list(map(int, input().split())) # 組み込み関数 list()
# シーケンスを変換します
# 可変リストへ
プレ>
配列出力
さまざまな方法で配列を画面に表示することもできます。
<テーブル align="center" border="1" cellpadding="1" cellpacing="1" style="width:85%">
<本体>
多くのプログラミング言語で使用される標準的な方法。 |
このようなサイクルはより短く書くことができます。ループの各ステップの х の値は、配列の次の要素で埋められます。 |
Python では次のように記述できます。 |
range(len(A)) 内の i の場合:
print(A[i], end=" ")
|
A の x の場合:
print(x, end=" ")
|
<プレ>
印刷(*A)
# 名前の前に * を付けます
配列の # は次のことを意味します
# 変換する必要があります
# 配列を個別の値のセットに変換する
プレ>
|
表>
|