相关疑难解决方法(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中连接两个列表?

例:

listone = [1, 2, 3]
listtwo = [4, 5, 6]
Run Code Online (Sandbox Code Playgroud)

预期结果:

>>> joinedlist
[1, 2, 3, 4, 5, 6]
Run Code Online (Sandbox Code Playgroud)

python list concatenation

2250
推荐指数
26
解决办法
220万
查看次数

单列表中的对

通常情况下,我发现需要成对处理列表.我想知道哪个是pythonic和有效的方法,并在谷歌上找到了这个:

pairs = zip(t[::2], t[1::2])
Run Code Online (Sandbox Code Playgroud)

我认为这是pythonic足够的,但在最近讨论成语与效率之后,我决定做一些测试:

import time
from itertools import islice, izip

def pairs_1(t):
    return zip(t[::2], t[1::2]) 

def pairs_2(t):
    return izip(t[::2], t[1::2]) 

def pairs_3(t):
    return izip(islice(t,None,None,2), islice(t,1,None,2))

A = range(10000)
B = xrange(len(A))

def pairs_4(t):
    # ignore value of t!
    t = B
    return izip(islice(t,None,None,2), islice(t,1,None,2))

for f in pairs_1, pairs_2, pairs_3, pairs_4:
    # time the pairing
    s = time.time()
    for i in range(1000):
        p = f(A)
    t1 = time.time() - s

    # time using the pairs …
Run Code Online (Sandbox Code Playgroud)

python zip idioms list slice

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

标签 统计

python ×3

list ×2

concatenation ×1

coroutine ×1

generator ×1

idioms ×1

iterator ×1

slice ×1

yield ×1

zip ×1