【Pythonチュートリアル】3. 形式ばらないPythonの紹介

monitor Python

Pythonで扱う数値型、文字列型、リスト型について勉強します。

3.1 Pythonを電卓として使う

3.1.1. 数

算数で使用する演算子について、Pythonでは以下のように表現します。

演算子 演算 Input Output
+ 1 + 2 3
5 – 3 2
* 5 * 4 20
/ 17 / 3 5.666666666666667
// 商(少数切捨て) 17 / 3 5
% 余り 17 / 3 2
** 累乗 2**3 8

整数はint型、小数部を持つ数はFloat型です。
数値型の種類については、別の機会にで学びます。

変数に数値を代入することで、変数でも演算子が使用可能です。
例えば、BMI(体重 [kg] / 身長 [m]^2)を計算してみます。

weight = 78
length = 1.75

BMI = weight / length**2

print(BMI)
25.46938775510204

 

3.1.2.  文字列型(string)

文字列として扱う場合は、単一引用符/シングルコーテーション(’…’)もしくは二重引用符/ダブルコーテーション(”…”)で囲みます。
コーディング規約(PEP8)では、どちらかを推奨しているわけではなく、プロジェクトごとに統一するようポリシーを決めるべき、としています。

注意として、数字を扱う場合、それが数値型なのか文字列型なのかを意識する必要があります。

print(1234, type(1234))
print('1234', type('1234'))
1234 <class 'int'>
1234 <class 'str'>

 

Pythonもほかのプログラミング言語と同様、特殊文字が存在します。
特殊文字を表現する場合にエスケープシーケンス(\)を使用します。
ごく一部ですが、以下に示します。

エスケープシーケンス 意味
\\ バックスラッシュ(\)
\a ベル
\n 改行
\r キャリッジリターン
\t 水平タブ
\v 垂直タブ
print('C:\some\name')
C:\some
ame

“\n”が改行と認識されてしまっています。
エスケープシーケンスを使ってみます。

print('C:\some\\name')
C:\some\name

エスケープシーケンスを使わない、他の方法としてraw string(最初の引用符の前にrを付ける)が使えます。

print(r'C:\some\name')
C:\some\name

そのほかに、複数行にまたがって文字列リテラルを書く1つの方法として、三連引用符(“””…””””’…”’) があります。
改行文字は自動で認識されますが、行末に\を入れることで、無視させることも可能です。

print('''
1行目
2行目\
<-ここの改行は無視
3行目''')
1行目
2行目<-ここの改行は無視
3行目

 

文字列同士の演算(+で結合、*で反復)も可能です。

3 * 'un' + 'ium'
'unununium'

文字リテラル(引用符で囲われた文字列)を並べるだけでも結合されます。
この機能は、ソースコードで長文を書くとき(※)に役に立ちます。
コーディング規約(PEP8)によると、1行の長さはし最大79文字とすることを推奨されています。
 これは、エディタによる自動折り返し機能による、見た目が崩れることを防ぐためのようです。

text = ('Put several strings within parentheses '
         'to have them joined together.')
'Put several strings within parentheses to have them joined together.'

 

文字列のindexを指定して、一部を取り出してくれる仕組みがあります。
indexは0から数えます。また、正の値だけでなく負の値も指定できます。
ex ) 文字列リテラル[index]

word = 'Python'
print('index 0 =', word[0])
print('index 1 =', word[1])
print('index -1 =', word[-1])
print('index -2 =', word[-2])
index 0 = P
index 1 = y
index -1 = n
index -2 = o

リストはndex指定だけでなく、スライスもサポートしているので、任意の範囲で文字列を取り出すことも可能です。
ex) 文字リテラル[start:end:step]
※startを指定しない場合は先頭から、endをしてしない場合は最後まで、stepを指定しない場合は文字ずつ文字列を取り出します。

print('index 0~2 =', word[0:2])
print('index  ~2 =', word[:2])
print('index 2~5 =', word[2:5])
print('index 2~  =', word[2:])
index 0~2 = Py
index  ~2 = Py
index 2~5 = tho
index 2~  = thon

word[2:5]の場合、index:5の”n”が含まれませんので、要注意です。
Pythonチュートリアルにも記載がありますが、以下の通り理解するとよいです。

テキストエディタ等で文字を打つ場合のカーソルをイメージする感じです。
word[2:5]を指定した場合、2~5の間にある文字列(tho)が指定されたことになります。
+—+—+—+—+—+—+
|  P |  y |  t |  h |  o |  n |
+—+—+—+—+—+—+
0    1    2   3    4    5    6
-6  -5   -4  -3   -2   -1

組み込み関数len()を使えば、文字列の長さを返すことができます。

s = 'supercalifragilisticexpialidocious'
len(s)
34

 

 

3.1.3. リスト型(list)

Pythonでは様々なデータ型が存在します。それぞれが特徴を持っており、最も汎用性が高いlist型について紹介します。
リスト型は、コンマ区切りの値(要素)の並びを角括弧で囲んだもので表現されます。
ex) [arg1, arg2, arg3, …]

文字列同様、indexで要素を取り出したり、スライスをサポートしています。

squares = [1, 4, 9, 16, 25]
print(squares[0])
print(squares[-1])
print(squares[-3:])
1
25
[9, 16, 25]

全要素を指定するスライス”[:]”は、全要素を含む新しいリストを返します。つまりは浅いコピーを返します。(浅いコピー、深いコピーについては別で解説していますので、こちらを参照)

 

リストは連結したり、要素を入れ替えたりいろんな操作が可能です。

■リストの連結

squares + [36, 49, 64, 81, 100]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

■要素の入れ替え

cubes = [1, 8, 27, 65, 125]

# 4^3=64が正しいので、65→64に入れ替えます。

cubes[3] = 64
print(cubes)
[1, 8, 27, 64, 125]

要素の入れ替えではスライスでも指定可能です。

letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
letters[2:5] = ['C', 'D', 'E']
print(letters)
['a', 'b', 'C', 'D', 'E', 'f', 'g']

■要素の数を数える
リストに対して、組み込み関数len()を使うと、要素の数を返します。

len(letters)
7

■リストの入れ子
リストの入れ子とは、リストを含むリストです。
ex) [[arg11, arg12, arg13], [arg21, arg22, arg23]]

arg22にアクセスしたい場合、以下の通りの表記となります。

my_list = [[arg11, arg12, arg13], [arg21, arg22, arg23]]
print(mylist[1])
print(mylist[1][1])
[arg21, arg22, arg23]
arg22

 

 

3.2 プログラミングへの第一歩

ここまではプログラミンで行う簡単な処理について紹介しました。
もう少し勉強すると、もうちょっと複雑な課題にもPythonを使って解決することができます。
例えば、黄金比でおなじみのFibonacci数列を算出することともできます。

a, b = 0, 1
while a < 1000:
    print(a, end=',')
    a, b = b, a+b
0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987

上記ではいろんな機能を使っています。
これらの機能については、チュートリアルを進めていくと、だんだんと理解できるようになります。

 

 

参考

Pythonチュートリアル > 3. 形式ばらないPythonの紹介

タイトルとURLをコピーしました