0
0

Python 初級入門 基本とデータ

Last updated at Posted at 2024-09-03

前提

  • python初学者、触ったことない人が投稿しています
  • 個人的にあまり馴染みのない書き方について記載しています

変数宣言

  • constみたいな宣言方法ではない
  • 型定義をしなくても勝手に型推論してくれる
  • 変数が保持してるオブジェクトIDを取り出してtype関数に渡し、type関数はオブジェクトが持ってる型情報を返すだけです
    なので、型推論してるというわけではなさそうです。(コメントにてご教授いただいただきました)
  • 型が気になったらtype(num)みたいな感じで確認可能
  • 上書きも簡単にできる(値、型にかかわず)
    → 上書き(再代入)は、型変換しているのではなく、違うオブジェクトIDが代入されて参照先が変わるだけのことです。(コメントにてご教授いただいただきました)
.py
num = 1 # int
name = 'Taro' # string
is_ok = true # bool

# 後から入れた変数に簡単に型変換、上書きが可能
num = name
print(num) # 'Taro'

# python3.6から型宣言してあげることも可能になった
num: int = 1

# 頭文字に数字を入れるとSyntax Errorになる
1num = 1
  • 出力方法
    なんかふーんと思ったので記載
.py
print('hoge') # hoge

# カンマとかで区切って出力できる "sep=''"
print('Hi','hoge',sep=',') # Hi,hoge

# 末尾に関しても指定して出力できる(デフォルトは "\n" になっている)
print('Hi','hoge',sep=',',end='.\n') # Hi,hoge.

数値

  • 大半の数学関数は作成されているのでmathをインポートすることで使えるようになる
.py
# 商
17 / 3 # 5.666667

# 商を切り下げたものを取得できる
17 // 3 # 5

# べき乗
5 * 5 * 5 * 5 * 5 # 3125

# 上のべき乗と同じ動きになる
5 ** 5 # 3125

文字列

.py
# バックスラッシュを文字列として出力したい
print(r'\name\name') #\name\name

# ダブルクォートを3つ繋げると改行込みで出力してくれる
# バックスラッシュを使うと次の行からという命令になる
print("""\
改行
改行\
""") 
>>> 
改行
改行

# *が使える
print('Hi.' * 3) # Hi.Hi.Hi.

# 文字の代入(.format)
'a is {0} {1} {2}'.format(1,2,3) # a is 1 2 3

# 指定代入
'My name is {name} {family}. Watashi ha {family} {name}'.format(name='Taro', family='Tanaka');

# Python3.6からformatでなく、f-stringになったみたい。
# f-stringの方が処理が早いようです
a='a'
print(f'a is {a}') # a is a

x, y, z = 1, 2, 3
print(f'a is {x}, {y}, {z}') # a is 1, 2, 3
print(f'a is {z}, {y}, {x}') # a is 3, 2, 1

name = 'Taro'
family = 'Tanaka'
print(f'My name is {name} {family}. Watashi ha {family} {name}')
# My name is Taro Tanaka. Watashi ha Tanaka Taro

リスト

.py
array =[1,2,3,4]

# 全体を指定
array[:] # [1,2,3,4]

# 一つ飛ばしになる
array[::2] # [1,3]

# 順番が逆になる
array[::-1] # [4,3,2,1]

# 配列のデータを削除
del array # 何も表示されない

# リストのコピー
arr = [1,2,3]
arr2 = arr # [1,2,3]

# メモリが同じ場所を参照しているためarr2も更新される
arr[0] = 100
print(arr) # [100,2,3]
print(arr2) # [100,2,3]

# copyを使う
arr2 = arr.copy() # arr[:]でも同じことができる
arr[0] = 100
print(arr) # [100,2,3]
print(arr2) # [1,2,3]

タプル型

  • (1,2,3,4,5)と囲って使う型
  • 読み込み専用?みたいなイメージ、追加等はできない
  • カンマを使うとタプルになるので、忘れてしまうとstrやintになる
  • typeはtuple
.py
t=(1,2,3,4,5)
t[0] = 100 # errorになる

# tupleに配列を挿入することはできる
t = ([1,2],[3,4])
t[0][0] = 5 # このようなタプルの中の配列の書き換えは可能

# カンマを使うとタプルと認識される
t = 1,2
print(type(t)) # tuple

# タプルのアンパッキング
new_one = (10,20);
x,y = num_tuple
# 要するに展開している
print(x,y) # 10,20

辞書型

  • オブジェクトみたいな感じ
  • delとかpopはkeyを指定して、使うことが可能
  • コピーする際は参照渡しになるので、copy()を使うと参照渡しにならない
  • typeはdict
.py
d = {'x':1, 'y':2}
>>> d['x'] # 1

# 上書き
d['x'] = 10
>>> d # {'x':10, 'y':2}

# 追加
d[1] = 'hoge'
>>> d #{'x':10, 'y':2, 1:'hoge'}

# 以下のような生成方法もある
dict([('a':1),('b':2)]) #{'a':1, 'b':2}

集合

  • {}で囲って定義すると重複がなくなる
  • typeはset
  • 集合には並びはないのでa[0]のような指定はできない
.py
a = {1,2,3,4,3,2,4}
>>> a # {1, 2, 3, 4}

# a,bを比較し、重複していな値を抽出
b={4,3,5,6}
# aを基準にbと重複していない値
>>> a-b  #{1, 2}
# bを基準にaと重複していない値
>>> b-a #{5, 6}

# 重複した値を取得
>>> a & b # {3,4}

# どちらかにある値
>>> a || b # {1,2,3,4,5,6}

# どちらかにしかない値
>>> a ^ b # {1,2,5,6}

どんなmethodsがあるかわからなくて困った際

  • help関数を使って中身等を確認できる(printとかしてあげれば出力可能)
.py
import math
help(math)

学習してみて

実際にコードを書いてみないとなんとも言えないが、以下学習を通して感じたこと

  • これまで触った言語とはことなる書き方が多々あった
  • 型を意識しない書き方、上書き等は書きやすい反面、バグを生むリスクが高くなると感じた
  • 基本的に他の言語の基礎を学んでいれば、とっつきにくい等は感じなさそう

最後に

次はもう少し深ぼって実際のコードに触れてみようと思う

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0