Suche senden
Hochladen
Python勉強会3-コレクションとファイル
•
0 gefällt mir
•
453 views
理
理 小林
Folgen
研究室でPythonの勉強会を行った時の資料です
Weniger lesen
Mehr lesen
Technologie
Melden
Teilen
Melden
Teilen
1 von 23
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
アルゴリズム+データ構造勉強会(9)
アルゴリズム+データ構造勉強会(9)
noldor
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
Haruka Ozaki
すごいHaskell読書会 第六章 発表資料
すごいHaskell読書会 第六章 発表資料
Hiromasa Ohashi
Python勉強会4-制御構文とパッケージ
Python勉強会4-制御構文とパッケージ
理 小林
Effective python#28
Effective python#28
bontakun
R6パッケージの紹介―機能と実装
R6パッケージの紹介―機能と実装
__nakamichi__
Pythonで始めるDropboxAPI
Pythonで始めるDropboxAPI
Daisuke Igarashi
すごいHaskell読書会#1 in 大阪
すごいHaskell読書会#1 in 大阪
yashigani
Empfohlen
アルゴリズム+データ構造勉強会(9)
アルゴリズム+データ構造勉強会(9)
noldor
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
Haruka Ozaki
すごいHaskell読書会 第六章 発表資料
すごいHaskell読書会 第六章 発表資料
Hiromasa Ohashi
Python勉強会4-制御構文とパッケージ
Python勉強会4-制御構文とパッケージ
理 小林
Effective python#28
Effective python#28
bontakun
R6パッケージの紹介―機能と実装
R6パッケージの紹介―機能と実装
__nakamichi__
Pythonで始めるDropboxAPI
Pythonで始めるDropboxAPI
Daisuke Igarashi
すごいHaskell読書会#1 in 大阪
すごいHaskell読書会#1 in 大阪
yashigani
「plyrパッケージで君も前処理スタ☆」改め「plyrパッケージ徹底入門」
「plyrパッケージで君も前処理スタ☆」改め「plyrパッケージ徹底入門」
Nagi Teramo
Intoroduction of Pandas with Python
Intoroduction of Pandas with Python
Atsushi Hayakawa
Haskell勉強会 in ie
Haskell勉強会 in ie
maeken2010
純粋関数型アルゴリズム入門
純粋関数型アルゴリズム入門
Kimikazu Kato
Gensim
Gensim
saireya _
Pythonintro
Pythonintro
Mikio Kubo
R6 classes
R6 classes
hiroki84
R入門(dplyrでデータ加工)-TokyoR42
R入門(dplyrでデータ加工)-TokyoR42
Atsushi Hayakawa
これからの「言語」の話をしよう ―― 未来を生きるためのツール
これからの「言語」の話をしよう ―― 未来を生きるためのツール
Nobuhisa Koizumi
関数プログラミング入門
関数プログラミング入門
Hideyuki Tanaka
関西Scala勉強会 パターンマッチング
関西Scala勉強会 パターンマッチング
Naoki Wada
関数プログラミング ことはじめ (再)
関数プログラミング ことはじめ (再)
Suguru Hamazaki
Applicative functor
Applicative functor
Yuichi Adachi
"What Does Your Code Smell Like?"で学ぶPerl6
"What Does Your Code Smell Like?"で学ぶPerl6
risou
RUPC2017:Cの解説
RUPC2017:Cの解説
Takumi Yamashita
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Hiro H.
Ruby初級者向けレッスン 53回 ─── Array と Hash
Ruby初級者向けレッスン 53回 ─── Array と Hash
higaki
CLR/H No.35-2
CLR/H No.35-2
Nobuhisa Koizumi
200319 eash python_shareslide_functions
200319 eash python_shareslide_functions
Hiroki Katayama
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
Hiro H.
Organization View | Test para medir cultura organizacional
Organization View | Test para medir cultura organizacional
CultureSee
Deja de cargar tu celular en el suelo
Deja de cargar tu celular en el suelo
camicespedes
Weitere ähnliche Inhalte
Was ist angesagt?
「plyrパッケージで君も前処理スタ☆」改め「plyrパッケージ徹底入門」
「plyrパッケージで君も前処理スタ☆」改め「plyrパッケージ徹底入門」
Nagi Teramo
Intoroduction of Pandas with Python
Intoroduction of Pandas with Python
Atsushi Hayakawa
Haskell勉強会 in ie
Haskell勉強会 in ie
maeken2010
純粋関数型アルゴリズム入門
純粋関数型アルゴリズム入門
Kimikazu Kato
Gensim
Gensim
saireya _
Pythonintro
Pythonintro
Mikio Kubo
R6 classes
R6 classes
hiroki84
R入門(dplyrでデータ加工)-TokyoR42
R入門(dplyrでデータ加工)-TokyoR42
Atsushi Hayakawa
これからの「言語」の話をしよう ―― 未来を生きるためのツール
これからの「言語」の話をしよう ―― 未来を生きるためのツール
Nobuhisa Koizumi
関数プログラミング入門
関数プログラミング入門
Hideyuki Tanaka
関西Scala勉強会 パターンマッチング
関西Scala勉強会 パターンマッチング
Naoki Wada
関数プログラミング ことはじめ (再)
関数プログラミング ことはじめ (再)
Suguru Hamazaki
Applicative functor
Applicative functor
Yuichi Adachi
"What Does Your Code Smell Like?"で学ぶPerl6
"What Does Your Code Smell Like?"で学ぶPerl6
risou
RUPC2017:Cの解説
RUPC2017:Cの解説
Takumi Yamashita
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Hiro H.
Ruby初級者向けレッスン 53回 ─── Array と Hash
Ruby初級者向けレッスン 53回 ─── Array と Hash
higaki
CLR/H No.35-2
CLR/H No.35-2
Nobuhisa Koizumi
200319 eash python_shareslide_functions
200319 eash python_shareslide_functions
Hiroki Katayama
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
Hiro H.
Was ist angesagt?
(20)
「plyrパッケージで君も前処理スタ☆」改め「plyrパッケージ徹底入門」
「plyrパッケージで君も前処理スタ☆」改め「plyrパッケージ徹底入門」
Intoroduction of Pandas with Python
Intoroduction of Pandas with Python
Haskell勉強会 in ie
Haskell勉強会 in ie
純粋関数型アルゴリズム入門
純粋関数型アルゴリズム入門
Gensim
Gensim
Pythonintro
Pythonintro
R6 classes
R6 classes
R入門(dplyrでデータ加工)-TokyoR42
R入門(dplyrでデータ加工)-TokyoR42
これからの「言語」の話をしよう ―― 未来を生きるためのツール
これからの「言語」の話をしよう ―― 未来を生きるためのツール
関数プログラミング入門
関数プログラミング入門
関西Scala勉強会 パターンマッチング
関西Scala勉強会 パターンマッチング
関数プログラミング ことはじめ (再)
関数プログラミング ことはじめ (再)
Applicative functor
Applicative functor
"What Does Your Code Smell Like?"で学ぶPerl6
"What Does Your Code Smell Like?"で学ぶPerl6
RUPC2017:Cの解説
RUPC2017:Cの解説
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Ruby初級者向けレッスン 53回 ─── Array と Hash
Ruby初級者向けレッスン 53回 ─── Array と Hash
CLR/H No.35-2
CLR/H No.35-2
200319 eash python_shareslide_functions
200319 eash python_shareslide_functions
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
Andere mochten auch
Organization View | Test para medir cultura organizacional
Organization View | Test para medir cultura organizacional
CultureSee
Deja de cargar tu celular en el suelo
Deja de cargar tu celular en el suelo
camicespedes
Plan de seguimiento gestión 2011
Plan de seguimiento gestión 2011
colelcerro
Using Rational Publishing Engine to generate documents from Rational Rhapsody
Using Rational Publishing Engine to generate documents from Rational Rhapsody
GEBS Reporting
Cell hindi
Cell hindi
Ashok Arya
Lakshmi fm assignment
Lakshmi fm assignment
Lakshmi B
Wonders of modren architecture
Wonders of modren architecture
khawaaja
akuntansi umkm dan koperasi
akuntansi umkm dan koperasi
iska sari
Growth Hacking - Pirate Metrics
Growth Hacking - Pirate Metrics
Tomek Duda
BỂ CHỨA TRỤ THÉP_CIII
BỂ CHỨA TRỤ THÉP_CIII
Song ty
Workshop 7 Teaching about Science and Inventions
Workshop 7 Teaching about Science and Inventions
Maryna Tsehelska
Andere mochten auch
(11)
Organization View | Test para medir cultura organizacional
Organization View | Test para medir cultura organizacional
Deja de cargar tu celular en el suelo
Deja de cargar tu celular en el suelo
Plan de seguimiento gestión 2011
Plan de seguimiento gestión 2011
Using Rational Publishing Engine to generate documents from Rational Rhapsody
Using Rational Publishing Engine to generate documents from Rational Rhapsody
Cell hindi
Cell hindi
Lakshmi fm assignment
Lakshmi fm assignment
Wonders of modren architecture
Wonders of modren architecture
akuntansi umkm dan koperasi
akuntansi umkm dan koperasi
Growth Hacking - Pirate Metrics
Growth Hacking - Pirate Metrics
BỂ CHỨA TRỤ THÉP_CIII
BỂ CHỨA TRỤ THÉP_CIII
Workshop 7 Teaching about Science and Inventions
Workshop 7 Teaching about Science and Inventions
Ähnlich wie Python勉強会3-コレクションとファイル
ALPSチュートリアル(4) Python入門
ALPSチュートリアル(4) Python入門
Computational Materials Science Initiative
Python opt
Python opt
Mikio Kubo
Rで学ぶデータマイニングI 第8章〜第13章
Rで学ぶデータマイニングI 第8章〜第13章
Prunus 1350
初心者講習会資料(Osaka.R#5)
初心者講習会資料(Osaka.R#5)
Masahiro Hayashi
第2回R勉強会1
第2回R勉強会1
Paweł Rusin
F#入門 ~関数プログラミングとは何か~
F#入門 ~関数プログラミングとは何か~
Nobuhisa Koizumi
Yamadai.R チュートリアルセッション
Yamadai.R チュートリアルセッション
考司 小杉
命令プログラミングから関数プログラミングへ
命令プログラミングから関数プログラミングへ
Naoki Kitora
20141128 iOSチーム勉強会 My Sweet Swift
20141128 iOSチーム勉強会 My Sweet Swift
necocen
Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3
Ransui Iso
Ruby 3の型推論やってます
Ruby 3の型推論やってます
mametter
初心者講習会資料(Osaka.R#7)
初心者講習会資料(Osaka.R#7)
Masahiro Hayashi
Lisp batton - Common LISP
Lisp batton - Common LISP
Masaomi CHIBA
2016年6月版データマエショリスト入門
2016年6月版データマエショリスト入門
Yuya Matsumura
Control.Arrow
Control.Arrow
haru haru
Haskell勉強会2 in ie
Haskell勉強会2 in ie
maeken2010
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
Hiromi Ishii
九大_DS実践_Python基礎その1
九大_DS実践_Python基礎その1
RyomaBise1
Ruby講座第二回
Ruby講座第二回
mitsunaga
初心者講習会資料(Osaka.r#6)
初心者講習会資料(Osaka.r#6)
Masahiro Hayashi
Ähnlich wie Python勉強会3-コレクションとファイル
(20)
ALPSチュートリアル(4) Python入門
ALPSチュートリアル(4) Python入門
Python opt
Python opt
Rで学ぶデータマイニングI 第8章〜第13章
Rで学ぶデータマイニングI 第8章〜第13章
初心者講習会資料(Osaka.R#5)
初心者講習会資料(Osaka.R#5)
第2回R勉強会1
第2回R勉強会1
F#入門 ~関数プログラミングとは何か~
F#入門 ~関数プログラミングとは何か~
Yamadai.R チュートリアルセッション
Yamadai.R チュートリアルセッション
命令プログラミングから関数プログラミングへ
命令プログラミングから関数プログラミングへ
20141128 iOSチーム勉強会 My Sweet Swift
20141128 iOSチーム勉強会 My Sweet Swift
Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3
Ruby 3の型推論やってます
Ruby 3の型推論やってます
初心者講習会資料(Osaka.R#7)
初心者講習会資料(Osaka.R#7)
Lisp batton - Common LISP
Lisp batton - Common LISP
2016年6月版データマエショリスト入門
2016年6月版データマエショリスト入門
Control.Arrow
Control.Arrow
Haskell勉強会2 in ie
Haskell勉強会2 in ie
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
九大_DS実践_Python基礎その1
九大_DS実践_Python基礎その1
Ruby講座第二回
Ruby講座第二回
初心者講習会資料(Osaka.r#6)
初心者講習会資料(Osaka.r#6)
Kürzlich hochgeladen
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
Kürzlich hochgeladen
(8)
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
Python勉強会3-コレクションとファイル
1.
Python演習 3. コレクションとファイル
2.
前回の復習―string.split() • string.split() • 文字列を空白で分割し、文字列の「リスト」を返す •
例: 'This is a pen.'.split() # ['This', 'is', 'a', 'pen.'] • では、この返り値の「リスト」とは? • Fortranの配列のようなもの • ただし配列の大きさを宣言する必要が無い • そもそも変数の宣言自体がない • list.append(obj)やlist.pop()で後から増減できる • リストが使えると何が便利か • データの集まりを表現することが可能 • string.split()はその1つの例になっている • →今回:リストとその周辺(コレクション)
3.
リスト • リスト • データの集まり(0から始まる) •
存在しない添字には代入も参照もできない • データの「系列」が入ることを想定 • [](リテラル)で作る • x = [1, 2, 3] # [1, 2, 3] • x = [] # [] • str.split()等リストを作る関数(メソッド)で作る • x = 'This is a pen.'.split() # ['This', 'is', 'a', 'pen.'] • list()関数で作る • x = list(range(5)) # [0, 1, 2, 3, 4]
4.
リストの要素の参照と代入 • list[index] • listのindex番目の要素を取得する •
list[start:end:step] • 部分リストを作る(startは0から) • endは最後の添字の次の番号 • stepを指定するとstepごとに要素を拾う • stepが負の場合は後ろから読む • 例 • [1, 2, 3, 4, 5][0] # 1 (第0要素) • [1, 2, 3, 4, 5][0:3] # [1, 2, 3] (第0-3要素) • [1, 2, 3, 4, 5][::2] # [1, 3, 5] (2つに1つ読む) • [1, 2, 3, 4, 5][::-1] # [5, 4, 3, 2, 1] (逆順) • [1, 2, 3, 4, 5][:] # [1, 2, 3, 4, 5] (リストの複製)
5.
リストの操作1 • リストの操作 • list.append(x)
# listにxを追加 • list.extend(x) # listにxを展開して追加 • list.pop() # listから末尾の要素を削除し返す • list.pop(i) # listからi番目の要素を削除し返す • 例 x = [1, 2, 3, 4] # リストを生成しxに代入 x.append(5) # [1, 2, 3, 4, 5] x.extend([6, 7]) # [1, 2, 3, 4, 5, 6, 7] tail = x.pop() # tail = 7, x = [1, 2, 3, 4, 5, 6] head = x.pop(0) # head = 1, x = [2, 3, 4, 5, 6]
6.
リストの操作2 • +と* • list1
+ list2 # list1とlist2を連結したリスト • list * int # listをint回繰り返したリスト • 例 • [1, 2] + [3, 4] # [1, 2, 3, 4] • ['a', 'b'] * 3 # ['a', 'b', 'a', 'b', 'a', 'b'] • 関数(sorted(list)、len(list)) • sorted(list) # listをソートした配列を返す • len(list) # listの要素数(末尾のindex+1) • 例 • sorted([1, 2, 3, 4, 5]) # [5, 4, 3, 2, 1] • len([1, 2, 4, 8, 16]) # 5 (4ではない)
7.
注意―リストの複製 • 失敗例 x =
[1, 2, 3, 4] # リストを作ってxに代入 y = x # yにxをコピー x[0] = 2 # 「xの」先頭を変えたはずだけど… print(y) # => [2, 2, 3, 4] • 理由 • yには「リスト自体」がコピーされた • 「要素」がコピーされたわけではない • 正しい方法 • y = list(x) # listはリストを複製する • y = x[:] # 部分リストを作っても複製される
8.
注意―リストの複製(理由) Fortranの配列: 箱そのものに名前がある 名前が違えば別の箱 x(1) x(2)
x(3) x(n) … Pythonのリスト: 箱にタグを付けるだけ コピーするとタグだけ増える [0] [1] [2] [n-1] …
9.
発展―リスト内包表記 • [式 for
x in 基になるリスト] • 基になるリストの各要素に式を作用させたリスト • [式 for x in 基になるリスト if 条件] • 元になる集合で条件を満たす各要素について • 式を作用させたリストを作る • 例 • [x * x for x in [0, 1, 2, 3, 4]] # [0, 1, 4, 9, 16] • [x for x in [0, 1, 2] if x % 2 == 0] # [0, 2]
10.
リストのリスト • リストの中身 • リストの中には何でも代入可能 •
リストの中にリストを代入してもよい • →多次元配列の代用 • 例: 3x3の配列を作る • matrix = [[0]*3 for i in range(3)] # 配列の作成 • matrix[0][0] = 1 # 成分の代入 • print(matrix[0][0]) # 成分の表示 • 注意 • [0]*3は長さ3の配列を作る([]は第0成分に代入不可) • matrix[[0]*3]*3とすると各行が連動してしまう • 参照は(matrix[0])[0]と解釈される(代入も同様)
11.
リストの例ーコマンドライン引数 • コマンドライン引数とは • コマンド実行時に後ろに続けて書く引数 •
例: vi test.py # test.pyがコマンドライン引数 • コマンドライン引数の取得 (要import sys) • sys.argvでpython3に続く引数をリストとして取得 • パイプ(|)やリダイレクト(>)の後は含まれない • 例(これはREPLではなくシェルで実行) • echo 'import sys; print(sys.argv)' > argv.py • python3 argv.py # => ['argv.py'] • python3 argv.py a b c # => ['argv.py', 'a', 'b', 'c'] • python3 argv.py | cat # => ['argv.py']
12.
タプル • タプル • 一度作ったら変更できない
(定数リスト) • 参照はリストと同様 (例: (1, 2, 3)[0] # 1) • 1要素のタプルは(1,)のようにカンマを付ける • 変数の集まり=「構造」が入ることを想定 • (,)(リテラル)で作る • x = (1,2,3) # (1, 2, 3) • x = () # () • 複数の返り値を持つ関数を使う • def get_tuple(): • return 1, 2, 3 • x = get_tuple(): # (1, 2, 3)
13.
演習7―リストの操作 (REPL) 1. x
= [1, 2, 3]を実行して下さい 2. y = xとz = x[:]を実行して下さい 3. x.append(4)を実行しx, y, zを表示して下さい 4. x.pop()を実行しx, y, zを表示して下さい 5. [25, 10, 5, 1]をソートして下さい 6. ['25', '10', '5', '1']をソートして下さい
14.
辞書型 • 辞書型 • 配列と似ているが文字列(等)を添え字にできる •
存在しない添字は参照できない • 要素の並び順は不定 • 作り方 • z = {'key': val, …} # {}でキーと値のペアを書く • 使い方 • z = {'H': 1, 'C': 6} # {'H': 1, 'C': 6} • z['N'] = 7 # {'H': 1, 'C': 6, 'N': 7} • print(z) # => {'H': 1, 'C': 6, 'N': 7} • print(z['H']) # => 1 • print(z['O']) # KeyError
15.
辞書型―操作 • 辞書型の操作 • dict.keys()
キーのリストを返します • dict.values() 値のリストを返します • dict.items() tuple(キー, 値)のリストを返します • key in dict dictにkeyがあるか調べます • 例 x = {'spam': 1, 'ham': 2, 'egg': 3} # 辞書の作成 x.keys() # ['egg', 'ham', 'spam'] x.values() # [3, 2, 1] x.items() # [('egg', 3), ('ham', 2), ('spam', 1)] • 後で重要なユースケースを3つ示します • 分類は一般的ではないので注意!!
16.
辞書型―辞書的用法 • 目的とメリット • 辞書=定数表を作る •
参照するキーを変数にする • if文による分岐が不要になる • 例: 元素記号→原子番号変換 • z_tab = {'H': 1, 'C': 6, 'O': 8} # 原子番号の表 • sym = 'O' # 目的の元素の記号 • z = z_tab[sym] # 元素記号を逆引き
17.
辞書型―構造体的用法 • 目的とメリット • データの集まりをやり取りする(cf.タプル) •
変数を使って生成し、決まったキーで参照 • タプルと違い、参照時に順序を気にしなくて良い • 例: 球の半径、面積、体積(関数の返り値) def ball(r): pi = 3.1415926535897932384 return {'rad': r, 'area': 4*pi*r*r, 'vol': 4*pi*r*r*r/3}
18.
辞書型―動的変数用法 • 目的とメリット • イメージ:変数名を動的に決める •
キーを変数にして、逐次代入する • どんなキーがあるかが未知でも動く • 例: 要素を数える ar = list('Mississippi') # 1文字ずつのリスト cnt = {} # 計数用ハッシュ for ch in ar: # 1文字づつ処理 if ch in cnt: # すでに辞書にあれば cnt[ch] += 1 # 1増やす else: # 初めて見る文字なら cnt[ch] = 1 # 1を代入(項目を作成) print(cnt) # cntの中身を表示
19.
演習8―辞書の取り扱い (REPL) 1. dict
= {}により辞書を作って下さい 2. dictに'x': 3を追加し、表示して下さい 3. dictに'y': 4を追加し、表示して下さい 4. dictに'x': 5を追加し、表示して下さい 5. dictの'x'の値を1増やして下さい 6. dictの'z'の値を1増やそうとして下さい
20.
ファイル操作―ファイルを開閉 • open(filename[, mode]) •
ファイルを開いてファイルハンドラを返します • modeは"r"で読み込み、"w"で書き込みモード • modeを省略すると読み込みモードで開く • file.close() • fileを閉じます • 標準入出力 • sys.stdin: 標準入力のファイルハンドラ • sys.stdout: 標準出力のファイルハンドラ • sys.stderr: 標準エラー出力のファイルハンドラ • import sysが必要 • すでに開かれているのでそのまま使える
21.
ファイル操作―読み込み • for l
in file: (基本形) • fileから1行づつ読みlに順に代入する • file.read() • ファイルを全て読み込み、1つの文字列として返す • file.readlines() • ファイルを全て読み込み、文字列の配列で返す • file.readline() • ファイルを一行読み込み、文字列として返す
22.
ファイル操作―書き出し • 以下import sysは行われているとします •
標準出力への書き出し • print(obj) # objを表示 • sys.stdout.write(string) # stringを表示 • 標準エラー出力への書き出し • print(obj, file=sys.stderr) # objを表示 • sys.stderr.write(string) # stringを表示 • ファイルへの書き出し • f = open(filename, "w") • print(obj, file=f) # objを表示 • f.write(string) # stringを表示 • f.close()
23.
課題9―cpコマンド (file) • cpコマンド •
file1をfile2にコピーする • 実際にはfile1の中身をfile2に書いている • 問題 • cpコマンドを実装して下さい • オプションは実装しなくて構いません • 注意 • この演習ではファイルを操作します • 既存のファイルを壊さないようにして下さい • ディレクトリを作ってその中で行うと少し安全です
Jetzt herunterladen