正しくTogetter / min.tにログインできない不具合が発生中です。X側の修正をお待ちください(詳細はこちら)

Python文法詳解を詳解する会 #2 まとめ

2015年3月26日(木)に開催された「Python文法詳解を詳解する会 - 第2回」に関するまとめです。 http://python-in-depth.connpass.com/event/12943/ 講師は「Python文法詳解」の著者@atsuoishimotoさんです。
2
NAKAMURA, Tomohiro @tomoh1r

float('inf') == float('inf') は True float('nan') == float('nan') は False だった。無限大は不定形ではなくて無限として扱うのか。 #pygrambook

2015-03-26 20:03:45
Daigo Akane (赤根 大吾)💉x4 @dgakane

シーケンスの代入文 長さが異なってもよい #pygrambook

2015-03-26 20:06:14
Daigo Akane (赤根 大吾)💉x4 @dgakane

メンバーシップ演算子 >>> 'B' in ['A', 'B', 'C'] True >>> 'D' not in ['A', 'B', 'C'] True #pygrambook

2015-03-26 20:11:06
Takayuki Shimizukawa @shimizukawa

「なんでシーケンスのオブジェクト obj.len() で長さが取れないんだ、なんで len(obj) なんだ、という質問は禁止です」と言いながらちゃんと説明してくれる優しさ #pygrambook

2015-03-26 20:13:15
Takayuki Shimizukawa @shimizukawa

今日は開始1時間ちょっとで30ページ進んでいる。今日は48ページからなので、この調子なら今回100ページ超えられそうだ #pygrambook

2015-03-26 20:15:43
Daigo Akane (赤根 大吾)💉x4 @dgakane

リスト内包 >>> L = ['A', 'B', 'C'] >>> l = [value.lower() for value in L] >>> l ['a', 'b', 'c'] #pygrambook

2015-03-26 20:16:37
Daigo Akane (赤根 大吾)💉x4 @dgakane

>>> L = [('a', 1), ('b', 2)] >>> [c*i for c, i in L] ['a', 'bb'] 要素を分解できる #pygrambook

2015-03-26 20:23:44
c-bata @c_bata_

>>> a = [[]] * 10 >>> a[1].append(1) >>> a [[1], [1], [1], [1], [1], [1], [1], [1], [1], [1]] そっかたしかにコレじゃダメだ #pygrambook

2015-03-26 20:28:38
c-bata @c_bata_

空のリストを10個用意したい時はリスト内包使って[[] for i in range(10)] #pygrambook

2015-03-26 20:31:52
Daigo Akane (赤根 大吾)💉x4 @dgakane

空のリスト3つを要素とするリストをどう作るか >>> a = [[]]*3 これはだめ。なぜかというと >>> a [[], [], []] >>> a[0].append(1) >>> a [[1], [1], [1]] 要素がすべて同一のオブジェクト #pygrambook

2015-03-26 20:33:15
NAKAMURA, Tomohiro @tomoh1r

アスタリスクを使った構文良い。 #pygrambook

2015-03-26 20:36:44
Takayuki Shimizukawa @shimizukawa

「list.extend() は実験的なメソッドなので使うな、と書いてあった」2.4にあった docs.python.jp/2.4/lib/typess… けど、英語ドキュメントの方は2.1までさかのぼったら書いてあった docs.python.org/2.1/lib/typess… #pygrambook

2015-03-26 20:44:31
Daigo Akane (赤根 大吾)💉x4 @dgakane

>>> L = ['9', '100', '200'] >>> L.sort() >>> L ['100', '200', '9'] # 文字列としてソートされている #pygrambook

2015-03-26 20:44:41
Daigo Akane (赤根 大吾)💉x4 @dgakane

>>> L = ['9', '100', '200'] >>> L.sort(key=int) >>> L ['9', '100', '200'] # 数値としてソートされている #pygrambook

2015-03-26 20:44:54
Takayuki Shimizukawa @shimizukawa

「Timソートにはこのあいだバグが見つかりました。セキュリティーホールになる可能性があります。テラ単位のメモリをパソコンに積んでる人は注意して下さい」 注意しようw #pygrambook

2015-03-26 20:45:40
Daigo Akane (赤根 大吾)💉x4 @dgakane

タプル、実は()必要ない >>> a = 1,2,3 >>> a (1, 2, 3) #pygrambook

2015-03-26 20:47:07
Takayuki Shimizukawa @shimizukawa

タプルあるある func( x = 1, y = 2, ) を何かで書き換えたときに x = 1, y = 2, func(x=x, y=y) 関数funcは数値受け取りたいのになぜか1要素のタプルをそれぞれ受け取るという #pygrambook

2015-03-26 20:52:02
chiyama @chiyama

辞書のキー作成は hash() を使うのかな #pygrambook

2015-03-26 20:52:34
Daigo Akane (赤根 大吾)💉x4 @dgakane

リストとタプルはどう使い分けるか タプルは辞書のキーとして使える キーは更新不能なオブジェクトである必要がある #pygrambook

2015-03-26 20:53:03
chiyama @chiyama

>>> hash([1,2,3]) (略) TypeError: unhashable type: 'list' >>> hash((1,2,3)) -378539185 #pygrambook

2015-03-26 20:53:40
Daigo Akane (赤根 大吾)💉x4 @dgakane

>>> d = {1:100} >>> d = {"abc": 100} >>> d = {(1,2,3): 100} >>> d = {[1,2,3]: 100} # エラー #pygrambook

2015-03-26 20:53:41