Monday, October 31, 2016

Python3とPython2違いメモ

join
Python2では";".join(['a','b'])という奇怪な文法だったが、Python3ではは以下のようになっている。
 
>>> str.join(',', ['a','b'])
'a,b'
strはbuiltinのクラスなのでインポートする必要はない。

reduce
Python3ではfunctoolsの一部になった。functoolsをインポートする必要がある。
 
>>> from functools import reduce
>>> reduce(lambda x,y:x+y, [1,2,3])
6
map
mapが返すのはiteratorに変わった。listが欲しい場合はlistで囲む。
>>> map(str, [1,2,3])
<map 0x205b20b0="" at="" object="">
>>> list(map(str, [1,2,3]))
['1', '2', '3']
>>> 

多次元配列のsort
やりたいことは2つ目の要素でソートする、などのこと。Python2について昔ここに書いたことがあったのだけど、Python3ではkeyで渡すように変わっている。関数の書き方も変わったようだ。
>>> a = [[1,2],[3,0]]
>>> a.sort()
>>> a
[[1, 2], [3, 0]]
>>> a.sort(key=lambda x: x[1])
>>> a
[[3, 0], [1, 2]]
数の型
$ python2.7
Python 2.7.10 (default, Jul 30 2016, 18:31:42) 
>>> type(1)

>>> type(1.2)

>>> 
$ python3.5
Python 3.5.2 (default, Aug 16 2016, 05:35:40) 
>>> type(1)

>>> type(1.5)


No comments: