当前位置:  开发笔记 > 编程语言 > 正文

python:列表理解策略

如何解决《python:列表理解策略》经验,为你挑选了2个好方法。

我正在寻找一个字符串并创建一个构建原始字符串的字符串列表.

例如:

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

我确信有一种"pythonic"方式可以做到这一点; 我想我只是在失去理智.完成这项工作的最佳方法是什么?



1> dF...:

一种可能性:

>>> st = 'asdf'
>>> [st[:n+1] for n in range(len(st))]
['a', 'as', 'asd', 'asdf']


一个小问题,但我会使用xrange()而不是range(),因为你不需要创建整数列表:>>>​​ x ="asdf">>> [x [:n]表示n in xrange(1,len(x)+1)] ['a','as','asd','asdf']

2> Ben Blank..:

如果你要循环遍历"列表"的元素,你可能最好使用生成器而不是列表理解:

>>> text = "I'm a little teapot."
>>> textgen = (text[:i + 1] for i in xrange(len(text)))
>>> textgen
 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
>>>

此代码永远不会创建列表对象,也不会(delta垃圾收集)创建多个额外字符串(除此之外text).


请注意,使用简单的for循环可以更简单地获得相同的好处 - "for x in xrange(len(text)):do_something_with(text [:n + 1])"
推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有