Python 此字符串拆分循环的更简单实现

Python 此字符串拆分循环的更简单实现,python,Python,我有一个函数,它接收以点分隔的字符串。我想循环使用这个值,构建它并为每个级别运行一些代码。下面是一个实现: def example(name): module = [] for i in name.split('.'): module.append(i) print '.'.join(module) #do some stuff here 输出 >>> example('a.b.c.d') a a.b a.b.c

我有一个函数,它接收以点分隔的字符串。我想循环使用这个值,构建它并为每个级别运行一些代码。下面是一个实现:

def example(name):
    module = []
    for i in name.split('.'):
        module.append(i)
        print '.'.join(module)
        #do some stuff here
输出

>>> example('a.b.c.d')
a
a.b
a.b.c
a.b.c.d

但感觉很冗长。我正在寻找一个更简单、更干净或更短的实现。

将其拆分一次,然后切片:

s = 'a.b.c.d'

items = s.split('.')
print [items[:i] for i in xrange(1, len(items) + 1)]
# [['a'], ['a', 'b'], ['a', 'b', 'c'], ['a', 'b', 'c', 'd']]

将其拆分一次,然后切片:

s = 'a.b.c.d'

items = s.split('.')
print [items[:i] for i in xrange(1, len(items) + 1)]
# [['a'], ['a', 'b'], ['a', 'b', 'c'], ['a', 'b', 'c', 'd']]

如果您使用的是Python 3,则应如下所示:

>>> from itertools import accumulate
>>> txt = 'a.b.c.d'
>>> list( accumulate(txt.split('.'), lambda x,y: x + '.' + y) )
['a', 'a.b', 'a.b.c', 'a.b.c.d']
>>> def example(txt):
    for module in accumulate(txt.split('.'), lambda x,y: x + '.' + y):
        print('Done stuff with %r' % module)

>>> example('a.b.c.d')
Done stuff with 'a'
Done stuff with 'a.b'
Done stuff with 'a.b.c'
Done stuff with 'a.b.c.d'
>>> 

如果您使用的是Python 3,则应如下所示:

>>> from itertools import accumulate
>>> txt = 'a.b.c.d'
>>> list( accumulate(txt.split('.'), lambda x,y: x + '.' + y) )
['a', 'a.b', 'a.b.c', 'a.b.c.d']
>>> def example(txt):
    for module in accumulate(txt.split('.'), lambda x,y: x + '.' + y):
        print('Done stuff with %r' % module)

>>> example('a.b.c.d')
Done stuff with 'a'
Done stuff with 'a.b'
Done stuff with 'a.b.c'
Done stuff with 'a.b.c.d'
>>> 

对于general
#在这里做一些事情
,我认为这是正确的方法。在我看来很干净。你可以把它缩短,但我不认为你可以让它更容易阅读。对于一般的
#在这里做一些事情
,我认为这是正确的方法。在我看来很干净。你可以把它缩短,但我认为你不能让它更容易阅读。他的例子中循环体的其余部分呢?他的例子中循环体的其余部分呢?