More Related Content
PDF
KEY
KEY
Hello World Python featuring GAE PPTX
PDF
PDF
PDF
PDF
eggとはなんだったのか 栄光のsetuptools Viewers also liked
PDF
PDF
PPTX
PPTX
Renacimiento frances y aleman. PDF
DOC
Unit 2 concrete material 2.7 DOC
Unit 1 introduction to construction PPTX
PDF
Venmo patrick renner-company-report PDF
Elastic Plastic Foundation Similar to Effective python #5, #6
PDF
DATUM STUDIO PyCon2016 Turorial PDF
PPTX
PPTX
PPTX
KEY
PDF
KEY
PPT
PDF
PDF
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ. PDF
PDF
PPTX
PDF
PDF
PDF
PDF
PPTX
PDF
Recently uploaded
PDF
ソフトとハードの二刀流で実現する先進安全・自動運転のアルゴリズム開発【DENSO Tech Night 第二夜】 ー高精度な画像解析 / AI推論モデル ... PDF
2025/12/12 AutoDevNinjaピッチ資料 - 大人な男のAuto Dev環境 PDF
ソフトウェアエンジニアがクルマのコアを創る!? モビリティの価値を最大化するソフトウェア開発の最前線【DENSO Tech Night 第一夜】 PDF
音楽アーティスト探索体験に特化した音楽ディスカバリーWebサービス「DigLoop」|Created byヨハク技研 PDF
krsk_aws_re-growth_aws_devops_agent_20251211 PPTX
君をむしばむこの力で_最終発表-1-Monthon2025最終発表用資料-.pptx Effective python #5, #6
- 1.
- 2.
- 3.
- 4.
シーケンスをスライスする構文
• シーケンスのスライス
– シーケンスの部分に簡単にアクセス
–組み込みではlist, str, bytesで利用可
>>> S = [‘h’, ‘o’, ‘g’, ’e’, ’f’, ’u’, ’g’, ’a’]
>>> print(s[2:6])
[‘g’, ’e’, ’f’, ’u’]
• 構文
somelist[start:end]
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
シーケンスをスライスする構文
a[:] #[‘a’, ‘b’,‘c’, ’d’, ’e’, ’f’, ’g’, ’h’]
a[:5] #[‘a’, ‘b’, ‘c’, ’d’, ’e’]
a[:-1] #[‘a’, ‘b’, ‘c’, ’d’, ’e’, ’f’, ’g’]
a[4:] # [’e’, ’f’, ’g’, ’h’]
a[-3:] # [’f’, ’g’, ’h’]
a[2:5] # [‘c’, ’d’, ’e’]
a[2:-1] # [‘c’, ’d’, ’e’, ’f’, ’g’]
a[-3:-1] # [’f’, ’g’]
a[:]
a[:5]
a[:-1]
a[4:]
a[-3:]
a[2:5]
a[2:-1]
a[-3:-1]
- 11.
- 12.
スライスはコピペ(not カット&ペースト)
>>> a= [‘a’, ‘b’, ‘c’, ’d’, ’e’, ’f’, ’g’, ’h’]
>>> b = a[:4] # [‘a’, ‘b’, ‘c’, ’d’]
>>> b[1] = 99
>>> print(b)
[‘a’, 99, ‘c’, ’d’]
>>> print(a)
[‘a’, ‘b’, ‘c’, ’d’, ’e’, ’f’, ’g’, ’h’]
- 13.
代入によって適切に伸び縮み
• 代入するスライスの長さは同じでなくて良い
>>> b= a[:]
>>> b[1:-1] = [1, 2, 3]
>>> print(a)
[‘a’, ‘b’, ‘c’, ’d’, ’e’, ’f’, ’g’, ’h’]
>>> print(b)
[‘a’, 1, 2, 3, ’h’]
- 14.
代入によって適切に伸び縮み
>>> b =a
>>> print(a)
[‘a’, ‘b’, ‘c’, ’d’, ’e’, ’f’, ’g’, ’h’]
>>> a[:] = [1, 2, 3]
>>> print(a)
[1, 2, 3]
>>> assert a is b
>>> (no assertion)
- 15.
- 16.
- 17.
- 18.
- 19.
strideを使ったよくある技法
>>> a =‘abcdefgh’
>>> a[::-1]
‘hgfedcba’
☆Unicode文字列にはうまく動かない
>>> s = ‘ほげ’.encode(‘utf-8’)
>>> x = s[::-1]
>>> x.decode(‘utf-8’)
- 20.
使用例
a = [‘a’,‘b’, ‘c’, ’d’, ’e’, ’f’, ’g’, ’h’]
a[::2]
a[::-2]
a[2::2]
a[-2::-2]
a[-2:2:-2]
a[2:2:-2]
- 21.
1つのスライスで
start, end, strideを使わない
•start, endと一緒にstrideを使わない
• strideはできるだけ正の値に
• どうしても組み合わせる必要があるときは
strideのみとスライスのみに分けて使う
>>> a #[‘a’, ‘b’, ‘c’, ’d’, ’e’, ’f’, ’g’, ’h’]
>>> a[2:-2:2] #[‘c’, ’e’]
>>> b = a[::2] #[‘a’, ‘c’, ’e’, ’g’]
>>> c = b[1:-1] #[‘c’, ’e’]
- 22.
1つのスライスで
start, end, strideを使わない
•どうしても組み合わせる必要があるときは
strideのみとスライスのみに分けて使う
>>> a #[‘a’, ‘b’, ‘c’, ’d’, ’e’, ’f’, ’g’, ’h’]
>>> a[2:-2:2] #[‘c’, ’e’]
>>> b = a[::2] #[‘a’, ‘c’, ’e’, ’g’]
>>> c = b[1:-1] #[‘c’, ’e’]
>>> b = a[2:-2] #[‘c’, ‘d’, ’e’, ’f’]
>>> c = b[::2] #[‘c’, ’e’]
- 23.
まとめ
• start, end,strideを指定すると分かりにくいことがある
• strideはできるだけ正の値
• strideはstart, endどちらか一方のみと一緒に使う
• どうしてもすべて必要な時は2行に分ける
– もしくはitertoolsのisliceメソッドを使う (start, end, strideに負の値を許さない)
– (項目46:組み込みアルゴリズムとデータ構造を使う 参照)