Pythonの勉強を始めました。
昔使っていたmatlabっぽい使い方ができていて「こんな書き方で動くのか」と驚く日々です。
とはいえプログラミング嫌いが克服できたわけではなく、いまだに「What?」とか「I hate you!!」と家で叫びながらやっています。
とはいえPythonすべて理解した未来がきて読み返したら笑える出来事になりそうだなぁと思う出来事が多々あるのでここに記そうと思った次第です。
それではどうぞ。
お品書き
rangeそのままlistで使わせてよ
繰り返し文でよく出てくるrange
for i in range(5):
~~
みたいな使い方をします。iに0,1,2,3,4と入れながら~~の部分を5回繰り返しましょうねという命令です。ちなみに
for i in [0,1,2,3,4]:
~~
でも同じ結果になります。
んである時0~4のリスト(配列)を作ろうと思ったときにrangeでいけるな・・・!と考え
で実行したら
range(0, 5)
・・・?
いやいや、なんでやねんrangeもlistもfor文で同じように使えるじゃんと詰まったところです。
一応できるらしく
でやると
[0, 1, 2, 3, 4]
と出ます、解決。
":"がいろいろな役割を持っててあっているか不安になる
for i in range(5): 上のやつ
list[:] listの全要素
list[1:] listの2番目から最後までの要素
list[:-1] listの最初から最後から2番目までの要素
if flag==True: もしflagが真なら
class Myclass(): クラス定義
・・・
「:」に人質でも取られているのでしょうか・・・。
C++だと";"は文の終わり以外に出てきません。なのですがこの使われよう・・・。
list[1:4]
とか「あっているよね・・・?」と不安になりながらうっています。エラーが出たら別のところですし、意外と便利な”:”です。
内包表記の書き方を忘れる
pythonは便利な書き方があって
[0, 1, 2, 3, 4]
のようなfor文を書いて配列を作る命令文を1行で書く書き方「内包表記」があるんですよね
・・・あらら?間違えているね
SyntaxError: invalid syntax
・・・?????
[0, 1, 2, 3, 4]
内包表記だと":"はいらないんですね・・・。
分からなくなったらググりましょう!
()書き忘れる
ではなく
が正解。このコードに限らず()の中に何か変数を入れる場合があるらしく()がないとデフォルトで決まった値が入ってくださるようです。
print(list1[-1])←実行できるか不安になる
歴としてはC++が長いので配列のインデックスに負の数字を入れるととても不安になります。
できちゃうのがPython。負のインデックスを入れると最後から換算した要素になります。
結果は
4
この場合ですと0,1,2,3,4の最後から1番目の要素なので4が取り出されます。すごいけど書いてて不安になります・・・。
また苦戦箇所がたまったら書きたいと思います。