`
kissmett
  • 浏览: 39154 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

python2, python3 的map函数

 
阅读更多

网上找了段代码:

# 加载数据
def loadDataSet(fileName):  # 解析文件,按tab分割字段,得到一个浮点数字类型的矩阵
    dataMat = []              # 文件的最后一个字段是类别标签
    fr = open(fileName)
    for line in fr.readlines():
        curLine = line.strip().split('\t')
        fltLine = map(float, curLine)    # 将每个元素转成float类型
        dataMat.append(fltLine)
    return dataMat
#...
# 构建聚簇中心,取k个(此例中为4)随机质心
def randCent(dataSet, k):
    n = shape(dataSet)[1]
    centroids = mat(zeros((k,n)))   # 每个质心有n个坐标值,总共要k个质心
    for j in range(n):
        minJ = min(dataSet[:,j])
        maxJ = max(dataSet[:,j])
        rangeJ = float(maxJ - minJ)
        centroids[:,j] = minJ + rangeJ * random.rand(k, 1)
    return centroids

 在python3.7下报错:

 

(ludwig.py37) e:\test\kmeans>python km0.py
Traceback (most recent call last):
  File "km0.py", line 54, in <module>
  File "km0.py", line 34, in kMeans
  File "km0.py", line 25, in randCent
TypeError: unsupported operand type(s) for -: 'map' and 'map'
 
在python2.7下正常

 

在python3.7和python2.7下print了加载完的数据集dataMat中的一条数据,得到了不同的结果:

python3.7:

(ludwig.py37) e:\test\kmeans>python km.py
<map object at 0x000000001343A550>

 

 python2.7:

(ocr.py27) e:\test\kmeans>python km0.py
[1.658985, 4.285136]

 

 3.7返回的是map对象;2.7返回的是list对象;

 

 感觉是map()函数在python版本下的差异导致,验证一下:

python3.7:

 

(ludwig.py37) e:\test\kmeans>python
Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD6
4)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> map
<class 'map'>

  

python2.7:

(ocr.py27) e:\test\kmeans>python
Python 2.7 (r27:82525, Jul  4 2010, 07:43:08) [MSC v.1500 64 bit (AMD64)] on win
32
Type "help", "copyright", "credits" or "license" for more information.
>>> map
<built-in function map>

 

印证猜测:

python2下map是一个build-in function; python3下map是一个class,map()返回的是一个map class对象;

 

修改代码将map返回的结果强制转一下list即可支持python2, python3:

 

# 加载数据
def loadDataSet(fileName):  # 解析文件,按tab分割字段,得到一个浮点数字类型的矩阵
    dataMat = []              # 文件的最后一个字段是类别标签
    fr = open(fileName)
    for line in fr.readlines():
        curLine = line.strip().split('\t')
        fltLine = map(float, curLine)    # 将每个元素转成float类型
        fltLine = list(fltLine) #!!!!python3中 map返回的不是list是map类,形如<map at 0x3fed1d0>
        dataMat.append(fltLine)
    return dataMat

 

 python2.7, python3.7下都可通过.

分享到:
评论
1 楼 kissmett 2019-05-30  
filter函数亦同

相关推荐

    详解Python map函数及Python map()函数的用法

    map() 会根据提供的函数对指定序列做映射。下面通过本文给大家介绍Python map函数及Python map()函数的用法,需要的朋友参考下吧

    python中map函数用法.docx

    下面是一个简单的例子,演示了如何使用map函数将一个列表中的每个元素都加上1: ```python def add_one(x): return x + 1 lst = [1, 2, 3, 4, 5] result = map(add_one, lst) python中map函数用法全文共5页,当前为...

    pythonmap函数的用法.docx

    下面是一个简单的例子,演示如何使用map函数将一个列表中的每个元素加倍: ``` def double(x): return x * 2 my_list = [1, 2, 3, 4, 5] new_list = list(map(double, my_list)) print(new_list) pythonmap函数的...

    map函数,Python

    map函数,Python

    python中map函数用法(1).docx

    下面是一个简单的例子,演示了如何使用map函数将一个列表中的每个元素都加上1: ```python def add_one(x): return x + 1 lst = [1, 2, 3, 4, 5] result = map(add_one, lst) python中map函数用法(1)全文共5页,...

    Python Map 函数的使用

    map()是一个 Python 内建函数,它允许你不需要使用循环就可以编写简洁的代码。 一、Python map() 函数 ...在 Python 3 中,map()返回一个与传入可迭代对象大小一样的 map 对象。在 Python 2中,这个函数返回一个列表

    python3 map函数和filter函数详解

    map函数传入的第一个参数就是函数本身,即f。第二个参数是要操作的数据 map() 作为高阶函数,事实上它把运算规则抽象了,因此,我们不但可以计算简单的 f(x)=x 2 ,还可以计算任意复杂的函数,比如,把这个list 所有...

    Python中的高级函数map/reduce使用实例

    主要介绍了Python中的高级函数map/reduce使用实例,Python内建了map()和reduce()函数,本文就讲解如何使用它,需要的朋友可以参考下

    解决Python3下map函数的显示问题

    今天小编就为大家分享一篇解决Python3下map函数的显示问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    PYTHON3中内建函数MAP与REDUCE简单介绍.rar

    PYTHON3中内建函数MAP与REDUCE简单介绍.rar

    Python 函数式编程和高阶函数 02高阶函数map的使用.mp4

    Python 函数式编程和高阶函数 02高阶函数map的使用.mp4

    Python高阶函数—map()

    map()是 python 中内置的一个高阶函数,它接收一个函数 和一个可迭代对象,并通过把函数 f 依次作用在可迭代对象的每个元素上,得到一个新的迭代器(Python2则直接返回一个列表) 一个简单例子 def f(x): return x ...

    Python函数的返回值、匿名函数lambda、filter函数、map函数、reduce函数用法实例分析

    本文实例讲述了Python函数的返回值、匿名函数lambda、filter函数、map函数、reduce函数用法。分享给大家供大家参考,具体如下: 函数的返回值: 函数一旦执行到 return,函数就会结束,并会返回return 后面的值,...

    简单了解python高阶函数map/reduce

    举例说明,比如我们有一个函数f(x)=x2,要把这个函数作用在一个list [1, 2, 3, 4, 5, 6, 7, 8, 9]上,就可以用map()实现如下: 现在,我们用Python代码实现: def f(x): return x * x r = map(f, [1, 2, 3, 4, 5,...

    智普教育Python培训就业班 150多集Python基础+就业视频教程.txt

    智普教育python培训就业班python随堂视频教程 93 map函数习题2.flv 智普教育python培训就业班python随堂视频教程 94 map和Index.flv 智普教育python培训就业班python随堂视频教程 95 map和ord.flv 智普教育...

Global site tag (gtag.js) - Google Analytics