プログラミングマガジン

プログラミングを中心にIT技術をできるだけわかりやすくまとめます。

  • ホーム
  • Python
  • 【Python】「リスト(list)」と「タプル(tuple)」、「集合型(set)」、「…
 
 
     
  • サーバー言語  
    • Python
    • Ruby
    • PHP
    • SQL
  •  
  • インフラ  
       
    • AWS
    •  
    • 基本
    • Git
  • Web
       
    • Web開発
    • JavaScript
    • Vue.js
    • React
  •  
  • 設計  
       
    • 実装設計
    • DB設計
  • 問い合わせ
  

【Python】「リスト(list)」と「タプル(tuple)」、「集合型(set)」、「辞書型(dict)」について

06.18

  • miyabisan2
  • コメントを書く

この記事は3分で読めます

リスト(list)

特徴

  • 複数の値を1つの変数で管理できる
  • 重複して値を持たせることが可能
  • 後で要素の値を変更することができる。(ミュータブル)

構文

1
変数 = [値1,値2,値3]

値の取り出し

1
2
list = ['スイカ', 'メロン', 'いちご']
print(list[0]) # スイカ

for文で回す

1
2
3
4
5
6
7
list = ['メロン', 'スイカ', 'いちご']
for v in list:
    print(v)
 
メロン
スイカ
いちご

index番号付きで取得

enumerateという構文を使います。

1
2
3
4
5
6
7
list = ['スイカ', 'メロン', 'いちご']
for i, v in enumerate(list):
    print(i, v)
 
0 スイカ
1 メロン
2 いちご

最後尾に要素を追加

appendを使います。

1
2
3
list = [1, 2, 3]
list.append(4)
print(list) # [1, 2, 3, 4]

途中に要素を追加

1
2
3
l = [1, 2, 3]
l.insert(2, 4)
print(l) # [1, 2, 4, 3]

list同士をマージ

1
2
3
4
list1 = [1,2,3]
list2 = [4,5,6]
list1.extend(list2)
print(list1) # [1, 2, 3, 4, 5, 6]

要素を削除

1
2
3
l = [1, 2, 4,5]
l.remove(4)
print(l) # [1, 2, 5]

なお、もし同じ値が入っていた場合は最初の要素だけが削除されます。

リスト内包表記(リストを作成する)

1
2
list = [i for i in range(3)]
print(list) # [0, 1, 2]

for文とappendを使えば同じように書くことができますが、for + appendに比べて処理が高速になるメリットもあります。

ifと組み合わせる

1
2
ist = [i for i in range(5) if i % 2 == 0]
print(list) # [0, 2, 4]

タプル(tuple)

特徴

用途は、リスト(list)とほぼ同じだが、要素の値を変更できない(イミュータブル)という点が異なる。なのでlistと違って要素の追加や削除などの機能を持ったメソッドは存在しません。

構文

丸カッコを使います。

1
変数 = (値1,値2,値3)

値の取り出し

1
2
tuple = ('スイカ', 'メロン', 'いちご')
print(tuple[0]) # スイカ

分割代入(unpack)

1
2
3
4
5
6
7
8
9
tuple = ('スイカ', 'メロン', 'いちご')
t1,t2,t3 = tuple
print('t1',t1)
print('t2',t2)
print('t3',t3)
 
t1 スイカ
t2 メロン
t3 いちご

tuple同士を結合する。

全く新しいtupleを作成できます。

1
2
3
4
t1 = (1, 2)
t2 = (3, 4)
t3 = t1 + t2
print(t3) # (1, 2, 3, 4)

ユースケース

  • 固定値を作りたい場合

Listとの使い分け

パフォーマンスはlistに比べて良いです。ただ、要素の追加削除などはできないので要素の追加や削除などが発生する場合はlistを使ってそうでない場合は基本はTuppleを使うという形が良いと思います。

集合型(set)

特徴

  • 重複して値を持たせることができない。
  • 順序を付けることもできない。(例えば、{2,1,4}と定義しても勝手に{1,2,4}になってしまう。)
  • 数学的な演算(結合・交差・差分・対象差)を行わせることができる。

構文

波カッコを使います。

1
変数 = {値1,値2,値3}

addメソッド

要素を追加できます。

removeメソッド

要素を削除できます。

setメソッド

listからsetを生成する。その際は、もしlist内に重複した値があったりすれば自動で排除されます。

1
2
list = [1,2,3,4,4,5]
aaa = set(list) # 1,2,3,4,5

演算子「|」(パイプ)

値を足し算します。重複した値は無視されます。

1
2
3
4
5
A = {1,2}
B = {2,3}
C = A | B
print(C) # 1,2,3が出力される。

差集合(-)

1
2
3
A = {1,2}
B = {2,3}
C = A - B // 1

積集合(&)

両方に含まれている要素を抽出できます。

1
2
3
A = {1,2}
B = {2,3}
C = A & B # 2

辞書型(dict)

特徴

キーと値の組み合わせで値を持つことができる。

構文

1
変数 = {'キー1':値1,'キー2':値2,'キー3':値3}

値を取り出す。

1
2
3
4
5
6
d = {'スイカ': 80, 'メロン': 100}
print(d['メロン']) # 100
 
もしくは
 
d.get('スイカ') # 80

d['キー']とd.get('キー')の違い

ないキーを指定した場合の挙動が異なります。getだとNoneが返ってきますが、d['キー']だと実行時エラーになってしまいます。

値を取得して取得した値を消す。(pop)

1
2
3
d = {'スイカ': 80, 'メロン': 100, 'いちご': 30}
print(d.pop('スイカ')) # 80
print(d) # {'メロン': 100, 'いちご': 30}

値を変更する。

1
2
3
d = {'スイカ': 80, 'メロン': 100}
d['メロン'] = 150
print(d['メロン']) # 150

辞書に新しい要素を追加する。

1
2
3
d = {'スイカ': 80, 'メロン': 100}
d['いちご'] = 30
print(d) # {'スイカ': 80, 'メロン': 100, 'いちご': 30}

キー一覧を取得する

1
2
3
4
5
6
7
8
9
10
d = {'スイカ': 80, 'メロン': 100, 'いちご': 30}
d.keys() # dict_keys(['スイカ', 'メロン', 'いちご'])
 
d = {'スイカ': 80, 'メロン': 100, 'いちご': 30}
for key in d.keys():
    print(key)
 
スイカ
メロン
いちご

バリュー一覧を取得する。

1
2
3
4
5
6
7
d = {'スイカ': 80, 'メロン': 100, 'いちご': 30}
for value in d.values():
    print(value)
 
80
100
30

キーとバリューをまとめて取得する。

tupleで値が返ってきます。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
d = {'スイカ': 80, 'メロン': 100, 'いちご': 30}
for item in d.items():
    print(item)
 
('スイカ', 80)
('メロン', 100)
('いちご', 30)
 
 
d = {'スイカ': 80, 'メロン': 100, 'いちご': 30}
for key,value in d.items():
    print(key,value)
 
スイカ 80
メロン 100
いちご 30

複数の辞書をマージ

Python3.5から辞書同士をマージできるようになりました。

1
2
3
4
d1 = {'k1': 1, 'k2': 2}
d2 = {'k3': 3, 'k4': 4}
d3 = {'k5': 5, 'k6': 6}
d4 = {**d1, **d2,**d3}

ちなみに、元の辞書(上記例で言えばd1、d2、d3)は破壊されないです。

同じキーを指定した場合は後から指定した方で上書きされます。

スポンサーリンク
  • 2018 06.18
  • miyabisan2
  • コメントを書く
  • Python
  • Tweets Twitter
  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  1. 2023 07.08

    【Python】シングルトンの実装

  2. 2023 06.10

    【Python】「scrapy-selenium」を扱う。

  3. 2023 06.10

    【Python】scrapyからSQLite3へデータを保存するし、確認する。

  4. 2023 08.13

    【Lambda】PythonでLamda関数を定義して実行する

  5. 2023 06.20

    【副業】クラウドソーシングで案件獲得の流れ

  6. 2018 06.20

    【Python】「Anaconda」で「Django」の開発環境を作る。

  • コメント ( 0 )
  • トラックバック ( 0 )
  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

返信をキャンセルする。

【Python】対話実行モード(REPL)。開発環境(…

【サーバー技術】「SSL/TLS」について

RETURN TOP

著者プロフィール

エンジニア歴10年で過去に業務系、Webデザイン、インフラ系なども経験あります。現在はWeb系でフロントエンド開発中心です。

詳細なプロフィールはこちら

スポンサーリンク

カテゴリー

  • Android
  • AngularJS
  • API
  • AWS
  • C++
  • CSS
  • cursor
  • C言語
  • DDD
  • DevOps
  • Django
  • Docker
  • Figma
  • Git
  • GitLab
  • GraphQL
  • gRPC
  • Hasura
  • Java
  • JavaScript
  • Kubernetes
  • Laravel
  • linux
  • MySQL
  • Next.js
  • nginx
  • Node.js
  • NoSQL
  • Nuxt.js
  • Oracle
  • PHP
  • Python
  • React
  • Redux
  • Rspec
  • Ruby
  • Ruby on Rails
  • Sass
  • Spring Framework
  • SQL
  • TypeScript
  • Unity
  • Vue.js
  • Webサービス開発
  • Webデザイン
  • Web技術
  • インフラ
  • オブジェクト指向
  • システム開発
  • セキュリティ
  • その他
  • データベース
  • デザインパターン
  • テスト
  • ネットワーク
  • プログラミング全般
  • マイクロサービス
  • マイクロソフト系技術
  • マルチメディア
  • リファクタリング
  • 副業
  • 未分類
  • 業務知識
  • 生成AI
  • 設計
  • 関数型言語
RETURN TOP

Copyright ©  プログラミングマガジン | プライバシーポリシー