復習　Python tuotrial #2　データ構造１

#リスト
##リストとタプルの違い
リスト：ミュータブル(変更可能)であり、要素に対して削除や挿入などを行うことができる。
タプル：イミュータブル(変更できない)であり、要素に対して削除などができなくなる。
###リスト
リストの作成に関してはlist()か[]で囲むことで作成できる。

```python
individual_list = ['Anna', 'Tokyo', 'Japan', 20]
Anna_information = 'Anna', 'Tokyo', 'Japan', 20
individual_2_list = list(Anna_information)
print(individual_list)
#実行結果
['Anna', 'Tokyo', 'Japan', 20]
```
タプルからリストへの変換も可能であるまたlist()は文字列に対しても変換できる。

```python
cat = list('cat')
print(cat)
tuple_1 = ('a', 'b', 'c')
list_1 = list(tuple_1)
print(list_1)
#実行結果
['c', 'a', 't']
['a', 'b', 'c']
```
###リストから要素を取り出す。
これはスライスを使ってできる。

```python
print(list_1[0])
#実行結果
a
```
###リストのリスト
あるリストの中のリストの要素を取り出したい時は[X](どのリストか)[Y](リストの中の何番目か)とできる

```python
small_birds = ['hummingbird', 'finch']
extinct_birds = ['dodo', 'passenger pigeon', 'Norwegian Blue']
all_birds = [small_birds, extinct_birds]
print(all_birds)
#実行結果
[['hummingbird', 'finch'], ['dodo', 'passenger pigeon', 'Norwegian Blue']]
print(all_birds[0][1])
```
###リストによる要素の置き換え

```python
sports = ['soccer', 'baseball', 'basketball', 'cooking']
sports[3] = 'golf'
print(sports[3])
#実行結果
golf
```
###append()による要素の追加

```python
sports.append('valley ball')
print(sports)
```
##extend()または+=を使ったリストの結合

```python
other_1_sports = ['football', 'tennis']
other_2_sports = ['table tennis', 'surfing']
sports.extend(other_1_sports)
print(sports)
#実行結果
['soccer', 'baseball', 'basketball', 'golf', 'valley ball', 'football', 'tennis']
sports += other_2_sports
print(sports)
#実行結果
['soccer', 'baseball', 'basketball', 'golf', 'valley ball', 'football', 'tennis', 'table tennis', 'surfing']
```

##insert()によるオフセットをしていした要素の追加
append()はリストの末尾にしか要素を追加できないのに対しinsert()はリストのオフセットを指定して好きなところに要素を入れることができる。これは例えば住所、電話番号、名前の順で並べたときに追加するときに電話番号をもう一つ追加するときに名前のところにもう一つ加わる形になってしまうのでそのようなことがないようにしている。

```python
sports.insert(3,'cooking')
print(sports)
#実行結果
['soccer', 'baseball', 'basketball', 'cooking', 'golf', 'valley ball', 'football', 'tennis', 'table tennis', 'surfing']
```
###delによるしていしたオフセットの要素の削除
先ほどのcookingはsportsではないので削除しよう。

```python
del sports[3]
print(sports)
#実行結果
['soccer', 'baseball', 'basketball', 'golf', 'valley ball', 'football', 'tennis', 'table tennis', 'surfing']
```
次の関数を教えるにあたって今打ち込んだdel()の部分を削除してください。
###remove()による削除
オフセットはわからないが、要素はわかるのでそれを削除したいとなったときに使う。先ほどのcookingを削除したいときは

```python
sports.remove('cooking')
print(sports)
#実行結果
['soccer', 'baseball', 'basketball', 'golf', 'valley ball', 'football', 'tennis', 'table tennis', 'surfing']
```

###pop()
ある要素を取り出した後その要素を削除するというものだ。例えばワンタイムパスワードのようなものがあげられる(わかりやすい例を出していて、本当のことはわからないです。だいたいこんな感じということで掴んで欲しいです。)。これは一度作った後そのパスワードは毎度リセットされる。このようなものに用いる。

```python
print('My best sport is', sports.pop(0))
#実行結果
My best sport is soccer
print(sports)
#実行結果
['baseball', 'basketball', 'golf', 'valley ball', 'football', 'tennis', 'table tennis', 'surfing']
```
このように一度出したものは削除される。

###index()
要素の値から要素のオフセットを知る方法。

```python
print(sports['basketball'])
#実行結果
1
```
###in
値があるかどうかをチェックできるもの。

```python
print('Do you like baseball? :', 'baseball' in sports)
#実行結果
'Do you like baseball? : True
```
###count()を使った値の個数計算

```python
print(sports.count('baseball')
#実行結果
1
```
###join()を使った文字列への変換
```python
print(', '.join(sports))
#実行結果
baseball, basketball, golf, valley ball, football, tennis, table tennis, surfing
```
###sort()による要素のならびかえ
アルファベット順に並べたいときにはsort()を用いることによってできる
sort()はそのまま要素を並べた後その要素自体が置き換えられるもの
sorted()はその要素をコピーするから元の要素には何も作用されない。
これらのものは数字でやると数字順で返ってくる。
```python
alphabet_sports = sorted(sports)
print(alphabet_sports)
#実行結果
['baseball', 'basketball', 'football', 'golf', 'surfing', 'table tennis', 'tennis', 'valley ball']
print(sports)
#実行結果
['baseball', 'basketball', 'golf', 'valley ball', 'football', 'tennis', 'table tennis', 'surfing']
```