相关疑难解决方法(0)

"yield"关键字有什么作用?

yieldPython中关键字的用途是什么?它有什么作用?

例如,我试图理解这段代码1:

def _get_child_candidates(self, distance, min_dist, max_dist):
    if self._leftchild and distance - max_dist < self._median:
        yield self._leftchild
    if self._rightchild and distance + max_dist >= self._median:
        yield self._rightchild  
Run Code Online (Sandbox Code Playgroud)

这是来电者:

result, candidates = [], [self]
while candidates:
    node = candidates.pop()
    distance = node._get_dist(obj)
    if distance <= max_dist and distance >= min_dist:
        result.extend(node._values)
    candidates.extend(node._get_child_candidates(distance, min_dist, max_dist))
return result
Run Code Online (Sandbox Code Playgroud)

_get_child_candidates调用该方法时会发生什么?列表是否返回?单个元素?它又被召唤了吗?后续通话何时停止?


1.代码来自Jochen Schulz(jrschulz),他为度量空间创建了一个很棒的Python库.这是完整源代码的链接:模块mspace.

python iterator yield generator coroutine

9664
推荐指数
46
解决办法
212万
查看次数

如何在Python中将字典键作为列表返回?

Python 2.7中,我可以将字典,项目作为列表获取:

>>> newdict = {1:0, 2:0, 3:0}
>>> newdict.keys()
[1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

现在,在Python> = 3.3中,我得到这样的东西:

>>> newdict.keys()
dict_keys([1, 2, 3])
Run Code Online (Sandbox Code Playgroud)

所以,我必须这样做以获得一个列表:

newlist = list()
for i in newdict.keys():
    newlist.append(i)
Run Code Online (Sandbox Code Playgroud)

我想知道,有没有更好的方法来返回Python 3中的列表?

python dictionary list python-2.x python-3.x

656
推荐指数
10
解决办法
101万
查看次数

构建一个基本的Python迭代器

如何在python中创建迭代函数(或迭代器对象)?

python iterator object

545
推荐指数
8
解决办法
34万
查看次数

Python Ellipsis对象有什么作用?

在闲置浏览命名空间的同时,我注意到一个名为" Ellipsis " 的奇怪物体,它似乎没有或做任何特殊的事情,但它是一个全局可用的内置.

在搜索之后,我发现它被Numpy和Scipy用于切片语法的一些模糊变体......但几乎没有别的.

这个对象是否专门用于支持Numpy + Scipy?省略号是否具有任何通用含义或用途?

D:\workspace\numpy>python
Python 2.4.4 (#71, Oct 18 2006, 08:34:43) [MSC v.1310 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> Ellipsis
Ellipsis
Run Code Online (Sandbox Code Playgroud)

python ellipsis

472
推荐指数
11
解决办法
12万
查看次数

430
推荐指数
11
解决办法
27万
查看次数

如何在Python中获取列表的最后一项?

我需要列表的最后9个数字,我确信有一种方法可以用切片来做,但我似乎无法得到它.我可以像这样获得前9个:

num_list[0:9]
Run Code Online (Sandbox Code Playgroud)

任何帮助都会很棒.

python list slice

256
推荐指数
5
解决办法
31万
查看次数

在Python中用块(n)迭代迭代器?

你能想出一个很好的方法(可能用itertools)将迭代器拆分成给定大小的块吗?

因此l=[1,2,3,4,5,6,7]chunks(l,3)变成一个迭代[1,2,3], [4,5,6], [7]

我可以想到一个小程序来做这个,但不是一个很好的方式可能itertools.

python iterator

102
推荐指数
6
解决办法
5万
查看次数

与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万
查看次数

这段代码中list [:]的含义是什么?

此代码来自Python的文档.我有点困惑.

words = ['cat', 'window', 'defenestrate']
for w in words[:]:
    if len(w) > 6:
        words.insert(0, w)
print(words)
Run Code Online (Sandbox Code Playgroud)

以下是我最初的想法:

words = ['cat', 'window', 'defenestrate']
for w in words:
    if len(w) > 6:
        words.insert(0, w)
print(words)
Run Code Online (Sandbox Code Playgroud)

为什么这段代码创建了一个无限循环而第一个没有?

python iteration for-loop list

58
推荐指数
3
解决办法
2万
查看次数

什么使python中的东西可迭代

是什么让Python中的东西可迭代?即.可以用它循环for

我可以在Python中创建一个可迭代的类吗?如果是这样,怎么样?

python

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