【初心者向け/ITスクール 78日】Python文法復習(Coding Test)
はじめに
今日は、ITスクールに通った78日目の日です。
昨日からまたペースをゆっくり上げ、Pythonの基礎復習とDBについて少し勉強し、Excelでテーブルを1NFにする練習をしました。DBに関しては土曜日にアップロードし、
今日はPythonで練習した文法を紹介したいと思います。
Data Structure
List (index)
List Comprehension 1次元配列
for文を配列の中で宣言し、割り当てることでコードを短くするテクニック
array = [i for i in range(10)]
print(array)
array_even = [i for i in range(10) if i % 2 == 0]
print(array_even)
array_nijou= [i*i for i in range(5)]
print(array_nijou)
[0,1,2,3,4,5,6,7,8,9]
[0,2,4,6,8]
[0,1,4,9,16]
List Comprehension 2次元配列
M x N の配列の初期化
[[0]*m for _ in range(n)]
[0]に構成されている長さmの1次元配列をn回繰り返す
1)[0]*m
2)for _ in range(n)
n = 4
m = 3
array = [[0]*m for _ in range(n)]
print(array)
[[0,0,0],[0,0,0],[0,0,0],[0,0,0]]
array関連メソッド
array.append()
:要素追加(一番最後のindexに)
array.sort(), array.sort(reverse = True)
: 整列
array.reverse()
: リストの要素をひっくり返します。
insert(index,value)
: 特定な位置に値を挿入します。
array.count(value)
: リストの中で特定な値がいくつあるかをチェックします。
array.remove(value)
: リストの中で特定な値がある場合、最初の値のみ除去
全部除去したい場合ははロジックを組む必要があります。
array = [0,1,3]
array.append(4)
print(array)
array.insert(2,2)
print(array)
array.sort()
print(array)
array.sort(reverse=True)
print(array)
array.reverse()
print(array)
[0,1,3,4]
[0,1,2,3,4]
[0,1,2,3,4]
[4,3,2,1,0]
[0,1,2,3,4]
array2 = [0,0,0,0,1,2,3]
print(array2.count(0))
array2.remove(0)
print(array2)
print(array2.count(0))
4
[0,0,0,1,2,3]
3
setを利用してすべての要素除去
a = [1,2,3,4,5,5,5]
remove_set = {3,5}
result = [i for i in a if i not in remove_set]
print(result)
[1,2,4]
Tuple (index)
tupleは一度、値が割り当てると変更ができないです。
(先日の記事で、tupleをmap()でリスト化した理由もその理由だと思います。)
メモリの効率がよく、不変なのでキーに使われる場合もあります。
Dictionary(key)
Hashtableの構造でデーターの照会にあたって、O(1)という一番良い効率性能を保証します。同様不変です。
dict()で初期化することができます。
data = dict()
data['a'] = 'apple'
data['b'] = 'banana'
data['c'] = 'coconut'
print(data)
# dic -> list
print(data.keys())
print(data.values())
for key in key_list:
print(data[key])
{'a':'apple', 'b':'banana', 'c':'coconut'}
dict_keys(['a','b','c'])
dict_values(['apple','banana','coconut'])
apple
banana
coconut
Set
データーの照会にあたって、O(1)という**一番良い効率性能を保証し、重複ができません。
set method
set(list or String)
: list、Stringなどのを除去します。
s = set([1,1,1,1,2,3,4,4,4,5])
print(s)
{1,2,3,4,5}
set.add(value)
: 1つの要素追加
set.update([value,value])
:1つ以上の要素追加(list)
set.remove(value)
:1つの要素を除去
s = {1,1,2,3,4,4,5}
s.add(6)
print(s)
s.update([7,8])
print(s)
s.remove(8)
print(s)
{1,2,3,4,5,6}
{1,2,3,4,5,6,7,8}
{1,2,3,4,5,6,7}
set union
set1 | set2 = 和集合
set1 & set2 = 共通部分
set1 - set2 = 差集合
set1 = set([1,2,3,4,5])
set2 = set([4,5,6,7,8])
print(set1 | set2)
print(set1 & set2)
print(set1 - set2)
{1,2,3,4,5,6,7,8}
{4,5}
{1,2,3}
入力
入力値の数が決めていない場合(list)
data = list(map(int,input().split()))
入力時間を減らすテクニック
import sys
data = sys.stdin.readline().rstrip()
print(data)
rstrip()はenterを除去しますので、必修です。
条件文
標準
区別する際にはspaceを4回打ちます。
if a>10:
1234ここからスタート
簡単な条件文
ソースコードが1行場合
a = 10
if a > 10: print('wow')
else: print('oops')
'oops'
Conditional Expression
score = 85
result = "Pass" if score > 80 else "Fail"
print(result)
Pass
自分で作成した条件文時間アルゴリズム(レンジ)
now_h, now_m = map(int, input().split())
cook_t = int(input())
result_m = (now_m + (cook_t % 60)) % 60
result_h = now_h + (cook_t // 60) + ((now_m + (cook_t % 60)) // 60)
if (result_h < 23):
print(result_h, result_m)
else:
print(result_h % 24, result_m)
こちらの方がより読みやすくて、スクラップしました。
Discussion