Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
类型为'的对象;地图';在Python 3中没有len()_Python_Python 3.x_Variable Length - Fatal编程技术网

类型为'的对象;地图';在Python 3中没有len()

类型为'的对象;地图';在Python 3中没有len(),python,python-3.x,variable-length,Python,Python 3.x,Variable Length,我对Python 3有一个问题。我得到了Python2.7代码,目前我正在尝试更新它。我得到一个错误: TypeError:类型为“map”的对象没有len() 在本部分: str(len(seed_candidates)) 在我初始化它之前,如下所示: seed_candidates = map(modify_word, wordlist) 有人能解释一下我该做什么吗 (编辑:以前这个代码示例是错误的,因为它使用了set而不是map。现在已经更新了。)在Python 3中,map返回的是一

我对Python 3有一个问题。我得到了Python2.7代码,目前我正在尝试更新它。我得到一个错误:

TypeError:类型为“map”的对象没有len()

在本部分:

str(len(seed_candidates))
在我初始化它之前,如下所示:

seed_candidates = map(modify_word, wordlist)
有人能解释一下我该做什么吗


(编辑:以前这个代码示例是错误的,因为它使用了
set
而不是
map
。现在已经更新了。)

在Python 3中,
map
返回的是一个map对象,而不是
列表

>>> L = map(str, range(10))
>>> print(L)
<map object at 0x101bda358>
>>> print(len(L))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: object of type 'map' has no len()

虽然公认的答案可能适用于OP,但这里有一些东西需要学习,因为有时即使执行OP的
map(modify\u word,wordlist)
casted to list并使用
len(list(map(modify\u word,wordlist)))检查长度,也找不到长度不能,因为有时长度是无限的

例如,让我们考虑以下生成器,懒惰计算所有的自然:

def naturals():
    num = 0
    while True:
        yield num
        num +=1
假设我想得到每一个的平方

doubles = map(lambda x: x**2, naturals())
请注意,这是map函数的完全合法使用,可以使用,并且允许您对
doubles
变量使用next()函数:

>>> doubles = map(lambda x: x**2, naturals())
>>> next(doubles)
0
>>> next(doubles)
1
>>> next(doubles)
4
>>> next(doubles)
9
...
但是,如果我们试着把它放到一个列表中呢?显然,python不知道我们是否在尝试通过一个永无止境的迭代器进行迭代。因此,如果我们试图将这个mapObject的一个实例强制转换为一个列表,python将不断尝试,并将陷入无限循环


因此,当您强制转换到列表时,您应该首先确保您知道您的贴图对象确实会生成有限数量的元素。

它对我有效。发布一个完整的例子来说明这个问题。你甚至没有在上面的代码中的任何地方调用
map
。这是谷歌目前的最高结果,当前的问题并没有一个很好的
map
示例,因此我将对问题进行大幅编辑,并更改OP最初的代码。我想OP在两年前第一次提出这个问题时遗漏了一些东西。如果有人反对,请随时回复。我认为这有一个规范的问题/答案。上面的问题是重复的。我认为列表(L)将使迭代器运行到底,这将使迭代器不再有用(除非您有意复制迭代器)
>>> doubles = map(lambda x: x**2, naturals())
>>> next(doubles)
0
>>> next(doubles)
1
>>> next(doubles)
4
>>> next(doubles)
9
...