鰤切手

元無職

【スポンサーリンク】

pythonの苦戦箇所を書いていく その1

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でいけるな・・・!と考え

 

list1=range(5)
print(list1)

 

で実行したら

 

range(0, 5)

 

・・・?

いやいや、なんでやねんrangeもlistもfor文で同じように使えるじゃんと詰まったところです。

一応できるらしく

 

list1=list(range(5))
print(list1)

 

でやると

 

[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は便利な書き方があって 

for i in range(5):
  list1[i]=i

print(list1)
 

[0, 1, 2, 3, 4]

 

のようなfor文を書いて配列を作る命令文を1行で書く書き方「内包表記」があるんですよね

 
list1=[i:for i in range(5)]
 
 
こんな感じで1行で書けるんですよね、実行すると
 
 
SyntaxError: invalid syntax

 

・・・あらら?間違えているね

 

list1=[i, for i in range(5):]

 

SyntaxError: invalid syntax 

 

・・・?????

 

list1=[i for i in range(5)]

 

[0, 1, 2, 3, 4]

 

内包表記だと":"はいらないんですね・・・。

分からなくなったらググりましょう!

 

 

()書き忘れる

 

from sklearn.datasets import load_iris
iris_dataset=load_iris

 

ではなく

 

from sklearn.datasets import load_iris
iris_dataset=load_iris()

 

が正解。このコードに限らず()の中に何か変数を入れる場合があるらしく()がないとデフォルトで決まった値が入ってくださるようです。

 

 

print(list1[-1])←実行できるか不安になる

 歴としてはC++が長いので配列のインデックスに負の数字を入れるととても不安になります。

できちゃうのがPython。負のインデックスを入れると最後から換算した要素になります。

  

 

list1=[i for i in range(5)]
print(list1[-1])

 

結果は 

 4

 

この場合ですと0,1,2,3,4の最後から1番目の要素なので4が取り出されます。すごいけど書いてて不安になります・・・。

 

 

また苦戦箇所がたまったら書きたいと思います。