リスト(List)
1. Overview
- 複数の型を入れることが出来る
- 後からリストの追加・置換・削除が可能
- [ ]で値を定義する
2. 宣言&参照&リストサイズ取得
2.1. 空の配列を作成する場合
2.1.1. pythonの場合
2.1.2. C++の場合
- C++ではvectorクラスを使用した処理が一番近い
- std::vector<型> 変数名で定義する
- リストサイズはsize()メソッドで取得する
c++ ソースコード
#include <iostream> //stdクラスの使用で必要
#include <vector> //vectorクラスの使用で必要
// vector作成
std::vector<int> v;
// リストサイズを表示
std::cout << v.size() << std::endl;
2.2. 1次元配列
=== "python"
ソースコード
```python
# リスト作成
myList = [1, 2, 3, "str"]
print(myList)
# リストの0番目を表示
print(myList[0])
# リストの3番目を表示
print(myList[3])
# リストサイズを表示
print(len(myList))
```
出力結果
```python
[1, 2, 3, 'str']
1
str
4
```
=== "c++" - vector内に複数のデータ型(intとstr型など)を入れることが出来ない
```C++
#include <iostream> //stdクラスの使用で必要
#include <vector> //vectorクラスの使用で必要
// vector作成
std::vector<int> v = {1,2,3,4};
// リストの0番目(1)を表示
std::cout << v[0]<< std::endl;
// リストの2番目(3)を表示
std::cout << v[2]<< std::endl;
// リストサイズを表示
std::cout << v.size() << std::endl;
```
2.3. 多次元配列を作成する場合
=== "python" ソースコード
# 2次元配列の作成
myList = [
[1, 2, 3],
[11, 12, 13,14]
]
# 出力
print(myList)
# 1次元目[0]の2次元目[0]の値を表示
print(myList[0][0])
# 1次元目[1]の2次元目[2]の値を表示
print(myList[1][2])
# 1次元目のリストサイズ([1,2,3]と[11,12,13,14]の2グループあること)を表示
print(len(myList))
# 2次元目の0番目[1,2,3])のリストサイズを表示
print(len(myList[0]))
# 2次元目の0番目[11,12,13,14])のリストサイズを表示
print(len(myList[1]))
出力結果
```python
[[1, 2, 3], [11, 12, 13,14]]
1
13
2
3
4
```
=== "c++" - std::vector<std::vector<型>> 変数名で定義する
```C++
#include <iostream> //stdクラスの使用で必要
#include <vector> //vectorクラスの使用で必要
// vector作成
std::vector<std::vector<int>> v = { {1,2,3},{11,12,13,13}};
// リストの0番目(1)を表示
std::cout << v[0][0]<< std::endl;
// リストの2番目(3)を表示
std::cout << v[1][2]<< std::endl;
// リストサイズを表示
std::cout << v.size()<< std::endl;
// 2次元目の0番目[1,2,3])を表示
std::cout << v[0].size()<< std::endl;
// 2次元目の0番目[11,12,13,14])を表示
std::cout << v[1].size()<< std::endl;
```
3. 追加
3.1. 最後尾に追加
=== "python" ソースコード
# リスト作成
myList = [1, 2, 3, "str"]
# リストを表示
print(myList)
# 最後尾に追加
myList.append(4)
# リストを表示
print(myList)
出力結果
```python
[1, 2, 3, 'str']
[1, 2, 3, 'str', 4]
```
=== "c++"
#include <iostream> //stdクラスの使用で必要
#include <vector> //vectorクラスの使用で必要
// vector作成
std::vector<int> v = {1,2,3};
//末尾に追加
v.push_back(4);
3.1.1. 最後尾にリストを追加
ソースコード
# リスト作成
myList = [1, 2, 3, "str"]
# リストを表示
print(myList)
# 最後尾に追加
myList = myList + [4, "mozi"]
# リストを表示
print(myList)
出力結果
3.1.2. 位置を指定して挿入する
- insert(挿入位置、挿入する値 or リスト)
ソースコード
# リスト作成
myList = [1, 2, 3, "str"]
# リストを表示
print(myList)
# 最後尾に追加
myList.insert(1,123)
# リストを表示
print(myList)
出力結果
3.2. 置換
3.2.1. 置換する範囲を指定してリストを変更する
ソースコード
# リスト作成
myList = [1, 2, 3, "str"]
# リストを表示
print(myList)
# 1番目~3番目の範囲(2,3)を削除して差し替える
myList[1:3] = [ 100,200,"mozi"]
# リストを表示
# (「2,3」が「100,200,"mozi"」に置換されている)
print(myList)
出力結果
3.3. 削除
3.3.1. 全要素削除
ソースコード
# リスト作成
myList = [1, 2, 3, "str"]
# 削除前
print(myList)
# 全要素を削除
myList.clear()
# 削除後
print(myList)
[]
出力結果
3.3.2. インデックス指定で削除
ソースコード
# リスト作成
myList = [1, 2, 3, "str"]
# 削除前
print(myList)
# インデックス1の要素を削除
del myList[2]
# 削除後
print(myList)
出力結果
3.3.3. インデックス指定で削除し、値を取得する
ソースコード
# リスト作成
myList = [1, 2, 3, "str"]
# 削除前
print(myList)
# インデックス1の要素を削除
data = myList.pop(1)
# 削除後
print(myList)
# 削除した値を表示
print(data)
出力結果
3.3.4. 要素(中身データ)を検索して一致したものを削除
- リスト内に指定した値が複数含まれていた場合、インデックスの小さい値が削除される
ソースコード
# リスト作成
myList = [1, 2, 1, "str"]
# 削除前
print(myList)
# 1が含まれている要素を削除
myList.remove(1)
# 削除後
# 先頭の1が削除されている
# 3つ目の1は削除されないことに注意!!!
print(myList)
出力結果
4. 検索
4.1. 最初にヒットしたものを取得する場合
index(検索する値で検索し、最初にヒットしたインデックス値を返却する- 検索キーが存在しない場合、例外の
ValueErrorを返却する
4.2. 全てのヒットを取得する場合
- リスト内包表記で検索して取得する