🐡

【初心者向け/ITスクール 78日】Python文法復習(Coding Test)

2023/11/09に公開

はじめに

今日は、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)

こちらの方がより読みやすくて、スクラップしました。


https://solution-is-here.tistory.com/99

Discussion