山内セミナー(2018/10/17)

関連サイトと資料

講義中に試したプログラム

test1.py
L = []
	
for i in range(11):
    L.append(i)
	
print(L[3:5])
print(L[3:])
print(L[:5])
	
stock = {"S":7, "M":12, "L":3}
print(stock["S"])

リスト

サンプルプログラム(1)

リストは値を順番に並べたもので、個々の要素はどんなデータでも構わない。 リストは、要素の一覧をカンマで区切って角括弧で括って表す。 リストの各要素の値は、0から始まる添え字に対応している。

リスト1.py
L = ['I did it all', 4, 3.14, '松竹梅']
for i in range(len(L)):
	print(L[i])

空のリストを定義し、要素の値を後から追加することも可能である。

リスト2.py
L = []
L.append('I did it all')
L.append(4)
L.append(3.14)
L.append('松竹梅')
	
for i in range(len(L)):
	print(L[i])

リストの連結と、添え字によるスライス(リストから1部分を取り出して別のリストを作成すること)の例を見てみよう。

リスト3.py
L1 = [1, 2, 3]
L2 = [4, 5, 6]
	
LL1 = L1 + L2
print("LL1 = L1 + L2 = {0}".format(LL1))
print("")
	
LL2 = [1, 2, 3]
LL2.append(L2)
print("LL2.append(L2) = {0}".format(LL2))
print("")
	
print("LL1[:] = {0}".format(LL1[:]))
print("LL1[3:] = {0}".format(LL1[3:]))
print("LL1[:3] = {0}".format(LL1[:3]))
print("LL1[3:5] = {0}".format(LL1[3:5]))
print("")
	
print("LL1[-1] = {0}".format(LL1[-1]))
print("LL1[-2:] = {0}".format(LL1[-2:]))
print("LL1[-2:-1] = {0}".format(LL1[-2:-1]))
print("LL1[:-1] = {0}".format(LL1[:-1]))

リストの比較もでき、要素の値と順番がまったく同一である時のみTrueになります。

リスト4.py
L1 = ["山田", "中村", "鈴木"]
L2 = ["山田", "中村", "鈴木"]
L3 = ["山田", "鈴木", "中村"]
	
print("(L1 == L2) = {0}".format(L1 == L2))
print("")
	
print("(L1 == L3) = {0}".format(L1 == L3))

これまで、リストの要素を1つずつ表示する時は「for i in range(len(リスト変数名)):」によって添え字を生成してアクセスしてきました。 しかし、実際にはもっと簡単にアクセスできます。 enumerate関数やzip関数と合わせて以下のサンプルプログラムに示します。

リスト5.py
family_name = ['江戸川', '毛利', '毛利', '灰原', '服部', '遠山', '阿笠', '吉田', '工藤']
first_name = ['コナン', '蘭', '小五郎', '哀', '平次', '和葉', '博士', '歩美']
	
for name in first_name:
    print(name)
print("")
	
for i, name in enumerate(first_name):
    print("{0}: {1}".format(i, name))
print("")
	
for name1, name2 in zip(family_name, first_name):
    print("{0}{1}".format(name1, name2))

辞書

サンプルプログラム(1)

辞書は、リストと同じように複数の値を1つにまとめて扱うためのデータ形式です。 要素ごとにキーをつけてキーで要素の値を取り出せるようにします。 辞書は「キー:値」をペアとした要素をカンマで区切り、{}で囲って作ります。

辞書1.py
stock = {"S":7, "M":12, "L":3}
for key in stock:
	print(stock[key])
print("")
	
result = {"t1":True, "t2":False, "t3":True}
for key in result:
	print(result[key])
print("")
	
point = {10:5.37, 20:5.56, 30:5.05, 40:5.16}
for key in point:
	print(point[key])

要素の追加、更新、削除、全削除の例を以下のサンプルプログラムに示します。

辞書2.py
stock = {}
stock["S"] = 7
stock["M"] = 12
stock["L"] = 3
for key in stock:
	print(stock[key])
print("")
	
stock["M"] = 100
for key in stock:
	print(stock[key])
print("")
	
del stock["L"]
for key in stock:
	print(stock[key])
print("")
	
stock.clear()
print(stock)

集合

サンプルプログラム(1)

集合(セット)は、グループにしたい値をカンマで区切って{}で囲って作ります。集合は1つの集合の中に同じ値の要素を重複して入れることができません。 また、順番もありません。既存のリストや文字列から集合に変換することもできます。さらに、ある値が特定の集合の要素として存在するかを調べることも可能です。

集合1.py
set1 = {11, 22, 33, 44, 55, 111, 222}
print(set1)
print("")
	
set2 = {33, 66, 99}
print(set2)
print("")
	
list1 = [100, 200, 300, 100, 400, 200]
set3 = set(list1)
print(set3)
print("")
	
s1 = 'banana'
set4 = set(s1)
print(set4)
print("")
	
print("(44 in set1) = {0}".format(44 in set1))
print("")
	
print("('z' not in set4) = {0}".format('z' not in set4))

集合には、和、積、差、対称差といった演算が定義されています。

集合2.py
setA = {'りんご', 'みかん', '桃', 'いちご'}
setB = {'いちご', 'スイカ'}
setC = {'みかん', 'バナナ'}
	
setD = setA | setB
print(setD)
print("")
	
setE = setA | setB | setC
print(setE)
print("")
	
setF = setA & setB
print(setF)
print("")
	
setG = setA - setB
print(setG)
print("")
	
setH = setA ^ setB
print(setH)