压缩"n"时间对象成员调用

Rub*_*ens 3 python lambda for-loop beautifulsoup

是否有任何非显式for方法可以n在对象上调用成员时间?

我正在考虑一些map/reduce/lambda方法,但我想不出办法做到这一点 - 如果有可能的话.

只是添加上下文,我正在使用BeautifulSoup,我正在从html表中提取一些元素; 我提取了一些元素,然后是最后一个元素.

因为我有:

# First value
print value.text

# Second value
value = value.nextSibling
print value.text

# Ninth value
for i in xrange(1, 7):
    value = value.nextSibling
print value.text
Run Code Online (Sandbox Code Playgroud)

我想知道是否有任何lambda方法 - 或其他 - 允许我这样做:

# Ninth value
((value = value.nextSibling) for i in xrange(1, 7))
print value.text
Run Code Online (Sandbox Code Playgroud)

PS:不,这种for方法没有任何问题,除了我真的很喜欢单线解决方案,这在我的代码中非常适合.

mgi*_*son 7

我对循环有强烈的偏好,但你可以使用reduce:

>>> class Foo(object):
...     def __init__(self):
...        self.count = 0
...     def callme(self):
...        self.count += 1
...        return self
... 
>>> a = Foo()
>>> reduce(lambda x,y:x.callme(),range(7),a)
<__main__.Foo object at 0xec390>
>>> a.count
7
Run Code Online (Sandbox Code Playgroud)

  • @StoryTeller:做了哪些准备?他刚刚创造了一个简单的例子来测试他的单线. (2认同)