Python リスト型データ Braces

Python学習11日目になり、次の直近の目標を30日に決めたマスターU(@Udemy11)です。

リストや配列という言葉をきくと、なんとなくプログラミングっぽく聞こえてくるのは私だけでしょうか?

と同時に、配列というだけで、かなりハードルが上がる気もします。

今日は、そんなリスト(配列)について、学習しました。

昨日の復習

昨日は、formatメソッドを学習しましたが、bracesの波括弧を使って、formatで指定した値を代入しました。
※print()は省略しています。

'a is {} {} {}'.format(1, 2, 3)
'a is {0} {1} {2}'.format(1, 2, 3)
'b is {2} {1} {0}'.format(1, 2, 3)
 
'My name is {name} {family}. 私の名前は{family} {name}です。'.format(name='Master', family='U')

出力結果

a is 1 2 3
a is 1 2 3
b is 3 2 1
 
My name is Master U. 私の名前はU Masterです。

bracesに何も入れなければ、formatの値がindexの順番どおりに値が代入されます。
indexを指定することで、formatの中の指定したindexの値が代入されます。

Python3.6以上であれば、変数の値を定義した後、【f】をつけてprint出力することも可能になりました。

n = 'Master'
f = 'U'
Point(f'My name is {n} {f}. 私の名前は{f} {n}')

formatとf-stringはどちらも文字列に値を追加するときに使う関数ですが、f-stringのほうが処理が10倍速いらしいです。

リスト型データ

Python リスト型データ Braces

リスト型データは、複数の値を持ったデータのことです。
順番にindexが振られていて、最初の値が0番目の位置になります。
数字や文字列を入れることができます。

l = [1, 25, 5, 6, 21, 8, 14, 7]
print(l)
print(l[0], l[-1], l[4], l[-3], l[:3], l[2:], l[:])

出力結果

[1, 25, 5, 6, 21, 8, 14, 7]
1 7 21 8 [1, 25, 5] [5, 6, 21, 8, 14, 7] [1, 25, 5, 6, 21, 8, 14, 7]

最後のindexは【-1】となります。
スライスは最初を省いたり、最後を省いたり、両方省いたりすることが可能です。
これは以前すでに学習しましたね。

list()と飛ばし抽出

Python リスト型データ Braces

list()を使えば、文字列をリストに変換することもできます。

n = list('abcdefg')
print(n)

出力結果

['a', 'b', 'c', 'd', 'e', 'f', 'g']

【:(コロン)】を2つ続けることで、一つ飛ばしや2つ飛ばし、最後から一つ飛ばしで抽出することも可能です。

print(n[::2])
print(n[::3])
print(n[::-2])

出力結果

['a', 'c', 'e', 'g']
['a', 'd', 'g']
['g', 'e', 'c', 'a']

規則正しい抽出の必要があるときに使えそうですね。

変数の長さ、タイプを求める

Python リスト型データ Braces

変数の長さを求めるlen()はすでに習いましたが、文字列でも数字でも配列のindex数を出力してくれます。
変数lとnについて長さをlen関数で出力します。

print(len(l))
print(len(n))

出力結果

8
7

ついでに変数と抽出したインデックスの型を出力しました。

print(type(l))
print(type(l[0]))
print(type(n))
print(type(n[0])
print(type(l[1:2])

出力結果

<class 'list'>
<class 'int'>
<class 'list'>
<class 'str'>
<class 'list'>

1つ目はリスト、2つ目は整数(int)、3つ目はリスト、4つ目は文字列(str)、最後はリストになります。

スライスが難しい?

配列の最初のindexが0なので、:(コロン)でスライスするときにどこで切るのか戸惑ってしまうときがあります。

[1, 2, 3, 4, 5, 6, 7]

のとき、[:3]と[3:]で少しこんがらがってしまいます。

[:3]の場合は、indexが3である【4】の前の値までを抽出するので、[1, 2, 3]となります。

一方、[3:]の場合は、indexが3である【4】から最後の値までを抽出するので、[4, 5, 6, 7]となります。

つまり、indexに注目すると、どっちがindex位置を含んでスライスするのかわからなくなります。

そこで、注目するのが、,(コンマ)の位置です。

スライスするのは【コンマの数の位置】と憶えておけば、上記のスライスはどちらも前から3つ目のコンマの位置で切り分けているので、どちらがindex位置の値を含むか考えなくてもすみます。

Python学習は、ほんといろいろ頭を使わないといけないので、ボケ防止にはぴったりですが、頭の回転が遅くなってきたアラフィフにとっては、脳が少しオーバーヒート気味で、頭が痛くなっちゃいます(笑)

ということで今日はここまで。

ではでは、Goog Python!