PeaceJetのブログ

金融系の社内エンジニアをやりながら、マーケティングやデータ分析などもやっています。

Python3のあれこれ

こんにちは!

最近、Raspberry Pi 3 Model Bを購入して遊んでいるPeaceJetです。
ただ、Linuxを触ったことがないので勉強しながらです(・_・;)

これまで、Windowsしか使ってこなくて、途中でMacBookとか買ってみたんですけど。
肌に合わなくて、売っちゃったりして。

でも、今更ながら少し後悔している部分もあります。
持っていれば、Unix勉強できたかなぁなんて。

ただ、一筋の光が見えたのはBash on Ubuntu for Windows10

なにやら、カチカチやっております。

最近、Python3をやっていて気がついた部分がありましたので、メモを・・・。

pythonにはswich文が存在しない

def func1():
    print("exec 1")
def func2():
    print("exec 2")

# Method 1
for case in [1,2]:
     if case == 1:
         func1()
     elif case == 2:
         func2()

# Method 2
for case in [1,2]:
    { 1: func1, 2: func2 }[case]()

if文の条件式は、Bool型へ変換される

たとえば、「0(ゼロ)」や空リストなど無に相当するものが評価されるとFalseが返されます。

if '':
    print('今日は雪です')

if 1:
    print('今日はユキです')

>>> 今日はユキです

一文で書くことが出来るのも魅力

# [評価が正当な場合の値] if [条件] else [評価が不当な場合]

10 if True else 0

>>> 10

for e in [1,2]: print(e)

...
1
2
>>>

#lambda

>>>c = lambda e : print("hello " + e)
>>>c('world')
hello world
>>>

イテレーションなど

# インデックスつきで、要素を得ることが出来ます。

for i, elem in enumerate(['a','b','c']):
    print('%s: %s' %(i, elem))

0: a
1: b
2: c

# list1,list2を同時にループ

list1 = [1, 2, 3]
list2 = [4, 5, 6]
for (a, b) in zip(list1, list2): print(a, b)
1 4
2 5

# イテレーター
# リストの要素を出し切ったら、例外が発生する。
users = iter(['Alice','Bob','Carol'])
try:
    while True:
        print(next(users))
except StopIteration:
    print('例外が発生しました。')

# トリッキーなやつ
a = (print(x) for x in range(5))
b = lambda *c: print("finished")
b(*a)
...
1
2
3
4
finished

P.S.
RaspberryPiは結構、魅力的なんですよね。

「何かできそう! だけど、どう活用しようかな?」

これを解決することが、今の課題です。

ビジネスの場では時間が大切ですから「ハッキリ見えてから使おう」なんですが、趣味ですからね。

もっと、知識があって出来る人と交流とかしたら楽しいのかも。