概要
PythonのインストールとPythonの公式チュートリアルで学習したことをまとめました。
開発環境
- OS:MacOS Mojave 10.14.6
- Python 3.8.5
インストール
1.pyenvのインストール
git clone git://github.com/yyuu/pyenv.git ~/.pyenv
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
2.pyenvの利用方法とpythonのインストール
pyenvでインストール可能なPythonのバージョンを確認します。
pyenv install --list
インストール可能なバージョンのPythonをインストールします。
pyenv install 3.8.5
使いたいPythonのバージョンに切り替えます。
pyenv local 3.8.5
pyenv global 3.8.5
問題(下記のリンク参照)
-
zshでpyenvが起動しない
https://qiita.com/hidekingerz/items/e2b662dfbeeb691999de -
MacOSのpyenvでpyexpatのエラーが出る対処
https://www.nozograph.com/2019/11/29/macos%E3%81%AEpyenv%E3%81%A7pyexpat%E3%81%AE%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%8C%E5%87%BA%E3%82%8B%E5%AF%BE%E5%87%A6/
文法
数値
print(1 + 1)
print(2 - 0.1)
print(4 * 2)
print(5 / 2)
# 出力
# 2
# 1.9
# 8
# 2.5
文字列
文字列は インデックス (添字) を指定して文字を取得できます。最初の文字のインデックスは 0 になります。インデックスには負の値も指定できます。また部分文字列も取得できます。
word = 'Python'
print(word[0])
print(word[5])
print(word[-1]) # インデックスに負の値
print(word[0:2]) # 部分文字列
# 出力
# 'P'
# 'n'
# 'n'
# 'Py'
Python の文字列は変更できません。従って文字列でインデックスを指定して代入するとエラーが発生します。
word = 'Python'
word[2] = 'T'
# 出力
# TypeError: 'str' object does not support item assignment
埋め込み文字列
a = "aaa"
print(f"私は{aaa}です"
リスト
リストには異なる型の要素を入れることができます。
list = [1, 'test', {"1":"test"}]
リストは連結などもサポートしています。
squares = [1, 4, 9, 16, 25]
print(squares + [36, 49, 64, 81, 100])
# 出力
# [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
if文
list = [1,2,3,4,5,6]
key1 = 10
key2 = 4
if key1 in list:
print(key1)
elif key2 in list:
print(key2)
else:
print('見つかりませんでした。')
# 出力
# 4
for文
Listや文字列を順番に繰り返し処理をします。
word = 'Python'
for num in word:
print(num)
# 出力
# P
# y
# t
# h
# o
# n
range関数
for i in range(5):
print(i)
# 出力
# 0
# 1
# 2
# 3
# 4
関数
def test(a,b):
return a+b
print(test(1,3))
# 出力
# 4
無名関数
一度しか使わない関数のことです。キーワードlambdaをつけることで使うことができます。
print((lambda a,b: a+b)(1,3))
# 出力
# 4
内包表記
for文を用いてListの全要素に処理をすることができます。
またif文を用いて抽出するリストを絞ることができます。
nums = [1,2,3,4,5]
nums_after = [i * 3 for i in nums if i != 2]
for num in nums_after:
print(num)
# 出力
# 3
# 9
# 12
# 15
# ちなみにC#のLINQだと以下のようになります。
# var nums = new List<int>(){1,2,3,4,5};
# var nums_after = nums.Where(x => x != 3).Select(x => x * 3);
その他のデータ構造
辞書
dic = {'one':'test1','two':'test2'}
## keyメソッドを用いたfor文
for key in dic.keys():
# dicのキーを取り出す
print(key)
# 出力
# one
# two
## valueメソッドを用いたfor文
for value in dic.values():
# dicの価を取り出す
print(value)
# 出力
# test1
# test2
## itemメソッドを用いたfor文
for key,value in dic.items():
# dicの値を取り出す
print(key,value)
# 出力
# one test1
# two test2
タプル
Listに似ていますが一度代入したら変更できないこととListより要素のアクセスが早い点が特徴です。
str_tuple = (1, 2, 3, 4)
集合
Listに似ていますがListと違い順番がないことと重複は無視されるのが特徴です。また和集合や積集合ができます。
str_set = {'red', 'red', 'blue', 'green', 'yellow', 'green'}
str_set2 = set('abcdefg')
str_set3 = set('acg')
print(str_set)
print(str_set2 | str_set3)
print(str_set2 & str_set3)
print(str_set2 - str_set3)
# 出力
# {'blue', 'red', 'yellow', 'green'}
# {'g', 'b', 'e', 'f', 'a', 'd', 'c'}
# {'a', 'g', 'c'}
# {'d', 'b', 'e', 'f'}