Python 基礎的な組み込み関数

### 組み込み関数について復習
自分用にいくつか関数についてまとめます。

### range関数
連続する整数を生成する。
第二引数でスタートを指定
第三引数でステップを指定
typeはrange
```python
#連続したリストを生成
list(range(5))
[0,1,2,3,4]

#スタート位置を指定
list(range(1,5))
[1, 2, 3, 4]

#ステップを指定
list(range(1, 10, 2))
[1, 3, 5, 7, 9]

#typeを出力
type(range(5))
range
```

### enumerate関数
データのインデックスと値をセットで取得する。
for文で使用することが多い

```python
#リストのインデックスと値を取得
l = ['apple', 'orange', 'banana']
for i,j in enumerate(l):
     print(i,j)
0 apple
1 orange
2 banana

# ディクショナリのキーと値を取得
d = {'apple':100, 'orange':200, 'banana':300}
for k,v in enumerage(d)
    print(k, v)
0 apple
1 orange
2 banana

#文字列のインデックスと値を取得
str = 'Python'
for i,j inenumerate(str)
    print(i,j)
0 P
1 y
2 t
3 h
4 o
5 n

#インデックスのスタートを指定（startを省略してもいけた）
str = 'Python'
for i, j in enumerate(str, start=10): 
    print(i, j)
10 P
11 y
12 t
13 h
14 o
15 n
```
### zip関数
複数のリストの要素をまとめて取得する。
for文と組み合わせて使用することが多い。
同じインデックスの要素がペアとなってタプルで取得。

```python
#二つのリスト
products = ['apple', 'orange', 'grape']
prices = [100, 200, 300]
for i in zip(products, prices):
    print(i)
('apple', 100)
('orange', 200)
('grape', 300)

#三つのリスト（一つ目の要素が多い）
products = ['apple', 'orange', 'grape', 'banana']
prices = [100, 200, 300]
numbers = [1, 2, 3]
for i in zip(products, prices, numbers):
    print(i)
('apple', 100, 1)
('orange', 200, 2)
('grape', 300, 3)
#bananaは取得されていない

#それぞれの要素をリストで取得
list(zip(products, prices, numbers))
[('apple', 100, 1), ('orange', 200, 2), ('grape', 300, 3)]
```

### len関数
データの要素数を取得

```python
#リストの要素数を取得
l = [10, 15, 20, 25, 30]
len(l)
5

#ディクショナリの要素数を取得
d = {'apple': 150, 'banana': 230, 'peach': 280}
len(d)
3

#文字列の要素数を取得
str = 'cool language python'
len(str)
20
#文字列はスペースも一文字としてカウント

#データフレームの要素数を取得
import pandas as pd
df = pd.DataFrame({'col1':['A', 'C', 'A', 'C', 'A'],
                    'col2':['a', 'a', 'c', 'c', 'a'],
                    'col3':[600, 800, 100, 120, 180]})
df
  col1 col2  col3
0    A    a   600
1    C    a   800
2    A    c   100
3    C    c   120
4    A    a   180

len(df)
5
#行の数が取得できる

#シリーズの要素数を取得
ser = pd.Series(['a', 'b', 'c', 'd', 'e'])
ser
0    a
1    b
2    c
3    d
4    e
dtype: object

len(ser)
5
#シリーズも行の数が取得される

```

### id関数
オブジェクトのIDを取得する
Pythonのオブジェクト
文字列・リスト・辞書・タプル・整数・etc...
プログラムがこれらを識別する固有の番号がID

```python
#整数のID
int = 5
id(int)
3009123936688
int = 2 + 3
id(int)
3009123936688
#値が同じなので同じidが取得される

int = 25
id(int)
3009123937328
#同じ変数に異なる値を入れたら異なるidが取得される
#変数名が同じでも代入する値が変わると異なるオブジェクトと認識される

#リスト
l = [12, 29, 34]
id(l)
3009199013824
#タプル
t = (12, 29, 34)
id(t)
3009198478400
#異なる型に同じ値を入れても異なるidが取得される

```

### pprint関数
リストや辞書の各要素を見やすく表示する
pprintモジュールのpprint関数のためimportが必要

```python
l = [{'name': 'A', 'age': 28, 'state': 'NY'},
        {'name': 'B', 'age': 32, 'state': 'NJ'},
        {'name': 'C', 'age': 25, 'state': 'MA'}]
print(l)
[{'name': 'A', 'age': 28, 'state': 'NY'}, {'name': 'B', 'age': 32, 'state': 'NJ'}, {'name': 'C', 'age': 25, 'state': 'MA'}]
#整っていないので見づらい

import pprint as pp
pp.pprint(l)
[{'age': 28, 'name': 'A', 'state': 'NY'},
 {'age': 32, 'name': 'B', 'state': 'NJ'},
 {'age': 25, 'name': 'C', 'state': 'MA'}]
#改行して表示されるので見やすくなった

#表示の幅を指定
pp.pprint(l, width=10)
[{'age': 28,
  'name': 'A',
  'state': 'NY'},
 {'age': 32,
  'name': 'B',
  'state': 'NJ'},
 {'age': 25,
  'name': 'C',
  'state': 'MA'}]

#先頭にインデントを入れる
pp.pprint(l, indent=3, width=10)
[  {  'age': 28,
      'name': 'A',
      'state': 'NY'},
   {  'age': 32,
      'name': 'B',
      'state': 'NJ'},
   {  'age': 25,
      'name': 'C',
      'state': 'MA'}]
```

### 終わり
初心者だからすぐ忘れちゃう。