8

文字列を取り、元の文字列を構築する文字列のリストを作成しようとしています。

例えば:

"asdf" => ["a", "as", "asd", "asdf"]

それを行うための「pythonic」方法があると確信しています。私はちょうど私の心を失っていると思います。これを行うための最良の方法は何ですか?

4

2 に答える 2

19

1 つの可能性:

>>> st = 'asdf'
>>> [st[:n+1] for n in range(len(st))]
['a', 'as', 'asd', 'asdf']
于 2009-01-21T21:30:19.780 に答える
17

「リスト」の要素をループする場合は、リスト内包表記よりもジェネレーターを使用する方がよい場合があります。

>>> text = "I'm a little teapot."
>>> textgen = (text[:i + 1] for i in xrange(len(text)))
>>> textgen
<generator object <genexpr> at 0x0119BDA0>
>>> for item in textgen:
...     if re.search("t$", item):
...         print item
I'm a lit
I'm a litt
I'm a little t
I'm a little teapot
>>>

このコードはリストオブジェクトを作成することはなく、(デルタガベージコレクション)が(に加えてtext)複数の追加の文字列を作成することもありません。

于 2009-01-21T21:47:34.690 に答える