読者です 読者をやめる 読者になる 読者になる

Python: クイックリファレンス(1)

他の言語でプログラミング経験した人向けのクイックリファレンスです。細かい説明はしていません。参考にしたベースは公式のチュートリアルの下記ページとなります。
http://docs.python.jp/3/tutorial/interpreter.html
http://docs.python.jp/3/tutorial/introduction.html

shebang文字コードの指定

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

1行目はshebangを指定し、2行目は文字コードを指定します。Windowsの場合、1行目のshebangは記載しなくて良いです。あってもよいですが、Pylintで規約に関する指摘されます。

文字コードの別の指定の仕方

#!/usr/bin/env python3
#coding: utf-8

コメント

# 単一行コメント

"""
複数行コメント
"""

'''
複数行コメント
'''

「#」から始まる行はコメント行になります。

変数

vnum = 1
vstr = 'クイックリファレンス'

型は暗黙に決まります。

標準出力

print("stdout")
print(777)

vnum = 1
vstr = 'クイックリファレンス'
print(vnum)
print(vstr)

実行結果

stdout
777
1
クイックリファレンス

標準入力

vinput = input("入力してください:")
print("入力結果:" + vinput)

実行結果

入力してください:テスト
入力結果:テスト

四則演算

print(9 + 2) # 加算
print(9 - 2) # 減算
print(9 * 2) # 乗算
print(9 / 2) # 除算(小数あり)
print(9 // 2) # 除算(小数切り捨て)
print(9 ** 2) # べき乗
print(9 % 6) # 余り

実行結果

11
7
18
4.5
4
81
3

整数同士の除算の場合に除算記号が「/」のみでは小数以下まで結果に含まれます。小数を切り捨てる場合の除算記号は「//」としてください。

文字列

print("line1")
print("""line2
line3""")
print("""li\
ne4""")

実行結果

line1
line2
line3
line4

「"""」のようにクオーテーションを3つ続けた文字列で囲うと改行をしても文字列が続きます。その際、自動的に改行コードが入ります。改行コードを入れないためには「\」を改行の前に入れます。
また「"」の代わりに「'」も使えます。

文字列連結

str1 = "abc"
str2 = "def"
num1 = 777
print(str1 + str2)
print(str1 + str(num1))

実行結果

abcdef
abc777

文字列同士は「+」記号で連結できます。しかし文字列と数値は直接連結できず、str関数を使い、数値を文字列に変換し連結します。

文字列のインデックス表記(配列表記)

word = "abcdef"

# 個別番号指定
print("0 = " + word[0]) # a
print("1 = " + word[1]) # b
print("2 = " + word[2]) # c
print("3 = " + word[3]) # d
print("4 = " + word[4]) # e
print("5 = " + word[5]) # f
# print("6:" + word[6]) # Error

# 個別番号指定(マイナス)
print("-1 = " + word[-1]) # f
print("-2 = " + word[-2]) # e
print("-3 = " + word[-3]) # d
print("-4 = " + word[-4]) # c
print("-5 = " + word[-5]) # b
print("-6 = " + word[-6]) # a
# print("-7:" + word[-7]) # Error

# スライス(範囲)指定
print("0:3 = " + word[0:3]) # abc
print("1:3 = " + word[1:3]) # bc
print(":3 = " + word[:3]) # abc
print("3: = " + word[3:]) # def
print(":100 = " + word[:100]) # abcdef
print("100: = " + word[100:]) # 空
print("5:3 = " + word[5:3]) # 空

実行結果

0 = a
1 = b
2 = c
3 = d
4 = e
5 = f
-1 = f
-2 = e
-3 = d
-4 = c
-5 = b
-6 = a
0:3 = abc
1:3 = bc
:3 = abc
3: = def
:100 = abcdef
100: =
5:3 =

個別番号指定の場合は範囲外を指定するとエラーになります。範囲指定の場合は超えた部分はエラーになりません。

リスト(配列)

vlist = [10, 20, 30, 40, "a"]
print(vlist[0]) # 10
print(vlist[4]) # a
print(vlist[-1]) # a
print(vlist[1:3]) # [20,30]
print(vlist[:]) # [10, 20, 30, 40, 'a']

# 多次元配列
vlist = [[10, 20, 30, 40, "a"],[100,200]]
print(vlist[0][1]) # 20
print(vlist[1][1]) # 200

実行結果

10
a
a
[20, 30]
[10, 20, 30, 40, 'a']
20
200

「[値, 値, ...]」の形式でリストを生成します。vlist[1:3]やvlist[:]のようにスライス指定して取得したリストは、コピーであり別のオブジェクトです。(リスト補足参照)

リストへの要素の追加

vlist = [10, 20, 30]
vlist += [40, 50, 60]
print(vlist[:]) # [10, 20, 30, 40, 50, 60]

実行結果

[10, 20, 30, 40, 50, 60]

リストに対し、リストを加算すると、加算した分のリストの要素が追加されます。

リストからの要素の削除

vlist = [10, 20, 30, 40, 50, 60]
vlist[2:5] = []
print(vlist[:]) # [10, 20, 60]
vlist2 += [70]
vlist[:] = []
print(vlist[:]) # []

実行結果

[10, 20, 60]
[]

削除する要素をスライス指定し、空のリストを代入すると要素が削除できます。

リスト補足

vlist = [10, 20, 30, 40, 50, 60]
vlist2 = vlist[:]
vlist2[2:5] = []
print(vlist[:]) # [10, 20, 30, 40, 50, 60]
print(vlist2[:]) # [10, 20, 60, 70]

実行結果

[10, 20, 30, 40, 50, 60]
[10, 20, 60, 70]

このようにスライス指定した取得したリストに変更を加えても、オリジナルに変更は入りません。