相关疑难解决方法(0)

与python列表混淆:它们还是不是迭代器?

在Nutshell中研究Alex Marteli的Python,书中暗示任何具有next()方法的对象(或者至少可以用作迭代器).它还表明大多数迭代器是通过对被调用方法的隐式或显式调用构建的iter.

在书中读到这篇文章后,我感受到了尝试它的冲动.我启动了一个python 2.7.3解释器,并做到了这一点:

>>> x = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> for number in range(0, 10):
...     print x.next()
Run Code Online (Sandbox Code Playgroud)

但结果如下:

Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
AttributeError: 'list' object has no attribute 'next'
Run Code Online (Sandbox Code Playgroud)

在混乱中,我试图研究x对象的结构,dir(x)我注意到它有一个__iter__函数对象.所以我发现它可以用作迭代器,只要它支持那种类型的接口.

所以当我再次尝试时,这一次略有不同,尝试这样做:

>>> _temp_iter = next(x)
Run Code Online (Sandbox Code Playgroud)

我收到了这个错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: list object …
Run Code Online (Sandbox Code Playgroud)

python iterator list

71
推荐指数
4
解决办法
5万
查看次数

Python range()和zip()对象类型

我理解函数如何在for循环中使用range()zip()可以使用.但是我希望range()输出一个列表 - 就像seq在unix shell中一样.如果我运行以下代码:

a=range(10)
print(a)
Run Code Online (Sandbox Code Playgroud)

输出是range(10),表明它不是列表而是不同类型的对象.zip()打印时有类似的行为,输出类似的东西

<zip object at "hexadecimal number">
Run Code Online (Sandbox Code Playgroud)

所以我的问题是它们是什么,有什么优势使它们成为现实,如何在没有循环的情况下将它们的输出发送到列表?

python iterator list range python-3.x

48
推荐指数
3
解决办法
8万
查看次数

为什么范围对象"不是迭代器"?

我写了这个并且期望0:

>>> x = range(20)
>>> next(x)
Run Code Online (Sandbox Code Playgroud)

相反,我得到了:

TypeError:'range'对象不是迭代器

但我以为这是一个发电机?

最初的答案产生了我最初对自己说的同样的事情:它是一个可迭代的,而不是一个交互者.但是,如果两者都是简单的生成器,那么这就无法解释为什么会这样做:

>>> x = (i for i in range(30))
>>> next(x)
0
Run Code Online (Sandbox Code Playgroud)

python generator python-3.x

21
推荐指数
3
解决办法
9098
查看次数

Python 中何时使用生成器函数以及何时使用循环

我有 Matlab 背景,我发现很难在 Python 中理解生成器的概念。

有人可以回答我以下问题吗:

  1. 生成器函数和循环之间的区别
  2. 每一项何时应实施

python iterator loops generator

8
推荐指数
1
解决办法
3892
查看次数

python 中 * 与 range() 有何作用?

我正在做一个 Hackerrank python 问题,任务是在不使用任何字符串函数的情况下打印123...NN输入在哪里)。

有人评论了一个解决方案:

print(*range(1, int(input())+1), sep='')
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  1. 这里的 * 与 range() 函数有什么用?
  2. 为什么我们不能仅在打印中使用 range() 函数来做到这一点?
  3. 还有其他方法可以做到这一点吗?

python range sequence python-3.x

1
推荐指数
1
解决办法
7526
查看次数

标签 统计

python ×5

iterator ×3

python-3.x ×3

generator ×2

list ×2

range ×2

loops ×1

sequence ×1