python学習 1時間(累計5時間)

辞書型のコピー

#辞書型も参照渡しを行うため代入する際は注意
x = {'a': 1}
y = x
y['a'] = 1000
print(x)
print(y)

x = {'a': 1}
#コピーする際は.copy()メソッドを使おう
y = x.copy()
y['a'] = 1000
print(x)
print(y)

 

 

辞書の使い方

使い所

 キーとバリューが1:1になっているものだと使いやすい

 キーさえ分かって入ればすぐにバリューが出せる(1行)

 ハッシュを使ってるからリストとかより出力が早い

 

#辞書型の場合キーとバリューが1:1になっているときに利用するといい
fruits = {
'apple': 100,
'banana': 200,
'orange': 300,
}

#キーさえわかって入ればすぐに出力できる
print(fruits['apple'])

#リストでも同じことができないではないけど出力の際にプログラムを組まなきゃいけないからやらないようにする
l = [
['apple', 100],
['banana', 200],
['orange', 300],
]

 

 

 集合型

 

--- リストにキー値がないような形で宣言

>>> a = {1, 2, 3, 4, 4, 4, 5, 6}

--- 重複したものがまとめられる
>>> a
{1, 2, 3, 4, 5, 6}
>>> type(a)
<class 'set'>
>>> b = {2, 3, 3, 6, 7}
>>> b
{2, 3, 6, 7}
>>> a
{1, 2, 3, 4, 5, 6}
>>> b
{2, 3, 6, 7}

--- 差を求めるとa にあってbにないものが表示
>>> a - b
{1, 4, 5}
>>> b - a
{7}

--- かつをもとめると両方にあるもの
>>> a & b
{2, 3, 6}

--- + でやろうとするとエラー
>>> a + b
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'set' and 'set'

--- or をすると両方にある全ての値

>>> a | b
{1, 2, 3, 4, 5, 6, 7}

--- ^ で排他の出力
>>> a ^ b
{1, 4, 5, 7}

 

 

集合のメソッド

>>> s = {1, 2, 3, 4, 5}
>>> s
{1, 2, 3, 4, 5}

--- リストのようにキーがあるわけではないのでエラー
>>> s[0]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'set' object does not support indexing

--- add()で値の追加が可能
>>> s.add(6)
>>> s
{1, 2, 3, 4, 5, 6}

--- 集合なので同じ値を追加しても表示は同じ
>>> s.add(6)
>>> s
{1, 2, 3, 4, 5, 6}

--- remove()で値の削除
>>> s.remove(6)
>>> s
{1, 2, 3, 4, 5}

--- clear()で空に
>>> s.clear()

--- {}でリストと同じかっこを使っているが、対話型では違いがわからないためからの場合はset()と表示される
>>> s
set()
>>> a = {}
>>> type(a)
<class 'dict'>
>>> a
{}

--- helpでメソッドの確認も可能
>>> help(set)

 

集合の使い所

何かの共通点を見つけ出すときに使う

#例共通の友達を探す場合
my_friend = {'A', 'C', 'D'}
A_friend = {'B', 'D', 'E', 'F'}
#&にて共通の項目を出力
print(my_friend & A_friend)

#種類を出力したい場合などに、set()を使うことで型変換できる
f = ['apple', 'banana', 'apple', 'banana']
kind = set(f)
print(kind)

 

 コメント

print('XXXXX')
"""
複数行かける!!
test
test
test
test
"""
print('XXXXX')

# Apple price pythonコメントアウトは行の上に書く暗黙の了解があり!!
some_value = 100

 

 

1行が長くなる場合

# 1行が長くなる場合
"""
覚えること
行末に\(バックスラッシュを入れる)
もしくは()パレンティスの丸括弧で囲むことで行を分けることができる
行を分ける場合は80文字を超える場合
"""
s = 'aaaaaaaaaaaaaaa' \
+ 'bbbbbbbbbbbbbbbb'

print(s)

x = (1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1
+ 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 )

print(x)

 if文

pythonの特徴

pythonはif文などで{}で範囲を指定しない

その代わりインデントを揃えることで判別を行なっているため綺麗に書かなければならない。

また、インデントの数は半角空白4文字が暗黙の了解

x = 10
if x < 0:
print('negative')
elif x == 0:
print('zero')
elif x == 10:
print('1000000000')
elif x == 10:
print('10')
else:
print('positive')


a = 5
b = 10

if a > 0:
print('a is positive')
if b > 0:
print('b is positive')