python2和python3 map函数的区别
1. map()是 Python内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上。
python2中,得到一个新的 list 并返回。
>>> res = map(float, [1,2,3,4]) >>> res [1.0, 2.0, 3.0, 4.0]
python3中,返回的是一个map()对象,可以将其强制转化为list
>>> res = map(float, [1,2,3,4]) >>> res <map object at 0x7f06160bffd0> >>> list(res) [1.0, 2.0, 3.0, 4.0]
也可通过迭代器获取值
>>> res = map(float, [1,2,3,4]) >>> res <map object at 0x7f1352c8dfd0> >>> for v in res: ... print (v) ... 1.0 2.0 3.0 4.0
2. 字符串与数值的比较
python2中,任意两个对象都可以比较大小。
CPython中的一个比较规则:不同类型的对象(实例),如果其中一个比较对象是数字型(int/float/long/complex等),则数字型的对象<其它非数字型的对象;如果两个都是非数字型的对象,则按照类型名的顺序比较,如{} < "abc"(按照"dict" < "str"),而"abc" > [1,2], "abc" < (1,2)。
因此,如果不注意类型验证,就会出现'0.3' > 5 这种无语法错误却明显不符合期望的结果。
>>> s = '0.3' >>> s > 5 True
python3中,对字符串与数值的比较做了显式的错误提示,直接抛出 TypeError 异常:
>>> s = '0.3' >>> s > 5 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: '>' not supported between instances of 'str' and 'int'

浙公网安备 33010602011771号