首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python -在for循环中使用frozenset条目列表时的问题

Python -在for循环中使用frozenset条目列表时的问题
EN

Stack Overflow用户
提问于 2016-02-11 10:04:23
回答 2查看 1.2K关注 0票数 5

我正在尝试从一本使用Python的书中学习apriori机器学习算法,作为学习的一部分,我目前正面临以下问题:

以下代码构造似乎运行良好:

代码语言:javascript
复制
Ck = [[1], [2], [3], [4], [5]]
    for tranid in range(10): 
        for candidate in Ck:
            print("Printing candidate value: ", candidate)

然而,以下内容不起作用:

代码语言:javascript
复制
Ck = [[1], [2], [3], [4], [5]]
Ck2 = map(frozenset, Ck)
    for tranid in range(10): 
        for candidate in Ck2:
            print("Printing candidate value: ", candidate)

当我将原始可迭代的每个元素映射到一个冻结集时,我注意到内部循环(“在Ck2中的候选”)只执行一次。在那之后,它永远不会执行。上面的代码没有冻结正确循环通过内环10次。但是,通过映射frozenset,我只能让内部循环执行一次。

请帮我修一下这个。本书将可迭代值映射为frozenset,因为为了算法的目的,他们不希望它是可变的。我只是想照原样去做。

我在Anaconda (Spyder)上使用Python3.5.1。

请帮助我,因为我对Python和机器学习都很陌生。

谢谢你,马伊什。

EN

回答 2

Stack Overflow用户

发布于 2016-02-11 10:14:05

映射运算符不返回python3中可以重复迭代的列表,而是返回一次可迭代迭代器。在python3.x中,map的工作方式类似于python2.x中的itertools.imap

要解决这个问题,请使用

代码语言:javascript
复制
 Ck2=list(map(frozenset, Ck)))

有关更多信息和其他解决方案,请参见Getting a map() to return a list in Python 3.x

票数 5
EN

Stack Overflow用户

发布于 2016-02-11 10:27:10

在python2.x中,map函数返回一个列表。在python3.x map函数中,返回一个map对象,一个可迭代对象。确实是一个迭代器。当您运行一次内部for循环时,迭代器将结束,因此您无法再从它获得值。在python2.x中,可以多次从列表中获取值。

你应将其修改为:

代码语言:javascript
复制
Ck = [[1], [2], [3], [4], [5]]
for tranid in range(10): 
    Ck2 = map(frozenset, Ck)
    for candidate in Ck2:
        print("Printing candidate value: ", candidate)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35336142

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档