私はPythonを学んでいます。これはプログラミングに関する私の最初の本当の経験です。私はhereという一連のレッスンを経験しています。Pythonでリストインデックスの名前を変更する - コードの説明を求める
私が教えているレッスンは、ネストループに関係しています。しかし、1つの練習では、リスト項目のインデックスの名前を本質的に変更することによって、問題に対する解決策を提供します。これは辞書が使われていないことを覚えておいてください。これらのレッスンはすばらしく進んでいますが、この問題に対するこの1つの答えは、何が起こっているのかについての説明がないので、私を困惑させます。さらに、レッスンシリーズや他の場所でこのテクニックを参照することはできません。
ここでは、練習で私に求めていることがあります。 1 "ネストされたforループを使用してカレンダーを表す3次元リストを作成するプログラムを作成します。最上位リストには各月のサブリストが含まれ、各月には4週間が含まれます。空のリスト 2コードを変更して、カレンダーの月に人間が読める月の名前でアクセスしやすくし、毎週1から番号が付けられた名前でアクセスしやすくします。 7月の第二週までの文字列の説明)。
最初の部分は全く問題なかった。第二部は、パラメータが与えられた少し挑戦でしたが、与えられた答えは、私が期待したものではなかった。
私が見てきましたディクショナリを使用したスタックオーバーフローの説明 Python: can I have a list with named indices?
しかし、ここでのソリューションは提供されていました:これは正確にどのように動作するか
(JANUARY, FEBRUARY, MARCH, APRIL, MAY, JUNE, JULY, AUGUST, SEPTEMBER, OCTOBER, NOVEMBER, DECEMBER) = range(12)
(WEEK_1, WEEK_2, WEEK_3, WEEK_4) = range(4)
calendar = []
for m in range(12):
month = []
for w in range(4):
month.append([])
calendar.append(month)
calendar[JULY][WEEK_2].append("Go on holiday!")
print(calendar)
誰かが説明でき命名指標の目標のこの種を達成しますか?私は月と週の名前が文字列でなくても変数名であることが奇妙であることを知っています。各変数名は、定義された特定の範囲内の各項目に割り当てられていると思います。しかし、私は変数名がリストのインデックスとして使用できることに驚いています。これが終わると、私は数値でインデックスを参照することはできません。例えば、私が使用することはできません。
calendar[1][1].append("This is the first week of January.")
私は最後の行の後に単純なループ書くとき、私はさらに、この理由で混乱しています:
for i in range(12):
print(i)
を私のように11までの番号0のプリントアウトを取得しますこれらの変数名は使用できません。
正確には何が起こっているのですか?これはどのように機能しますか?このような変数のリスト宣言
私は、1月の最初の週の私の例では、私はそのインデックスを1つオフにしていることがわかります。私は戻って 'calendar [0] [0] .append(" 1月の第1週 ")'をもう一度試しました。私がIndexErrorを受け取る前に、 'index out of range'と言っていました。しかし、今回は私がしなかった - これは私が私の元の試みで別のエラーがあったと私に信じさせる。 あなたの説明は私には意味があります。インデックスに使用されているこれらの変数のリストを出力する方法がありますか?私は、他のどこの指標にも変数が使われているのを見ていないので、アイデアの全体をより完全に包囲しようとしています。ありがとう! –
私は 'JANUARY = 0、 FEBRUARY = 1'などの割り当てを理解している間に混乱が残っていると思っています。なぜ後で' mの範囲(12)を 'と言っているのか分かりません:変数であり、整数ではありません。私はなぜJANUARY = 0を取得しますが、0 = JANUARYの場合は、後で 'for w in range(4)'と言うとき、この矛盾はなぜ起こりませんか?私はこの情報がどこに保存されているのか把握するのが難しいです。このコードの最後に 'print(list(range(12)))'を追加すると、まだ整数が得られます。なぜこれはあるインスタンスでは変数のセットを参照しますが、別のインスタンスでは参照しませんか? –