2011-11-03 72 views
4

我是Python新手,来自Java背景。我想知道写这个代码的最Python的方式:将字符串列表追加到数组的Python方法

entry_list = [] 
for entry in feed.entry: 
    entry_list.append(entry.title.text) 

基本上是在饲料中每一个元素,我想该元素的标题添加到列表中。

我不知道我是否应该使用地图()或lambda函数或什么...

感谢

+0

http://docs.python.org/howto/functional.html - 快乐编码。 – 2011-11-03 04:24:26

+0

@pst根本没有任何帮助。我知道如何以多种方式编写代码,我正在寻求其他人的建议,以获得最佳方式。 – Cuga

+0

我可以发誓,它涵盖了以下所有方法 - 特别是列表解析;-) – 2011-11-05 18:05:50

回答

8

最Python的代码,我能想到的:

entry_list = [entry.title.text for entry in feed.entry] 

这是一个list comprehension这将构建一个新的列表出feed.entry.title.text元素。

要追加,你需要做的事:

entry_list.extend([entry.title.text for entry in feed.entry]) 

作为一个侧面说明,在做扩展业务时,常快generator expression比列表理解慢得多。

+0

列表理解。列表构造函数是'list()'。 –

+0

derp,谢谢你,我的错误。 – Serdalis

+0

非常感谢! – Cuga

4

随着GENEX的权谋礼貌的一点点。

entry_list.extend(x.title.text for x in feed.entry) 

或者只是一个LC,如果你不需要保持相同的列表。

entry_list = [x.title.text for x in feed.entry] 
+0

出于某种原因,列表推导比'extend'功能的生成器序列更快。 – Serdalis

+2

有道理。使用LC可以一次性重新分配列表,而对于一个genex,它必须重新分配每个已产生的值。 –

+0

谢谢,我忘了列表理解 – Cuga

3

始终使用列表理解为简洁的表达式。

entry_list = [entry.title.text for entry in feed.entry] 

如果所有要与entry_list要做的就是再次遍历它,你可以使用发电机表达

entry_list = (entry.title.text for entry in feed.entry) 

注意,唯一的区别是使用括号。当使用生成器格式时,entry_list没有被填充并且可以保存内存。您将仍然能够做的事情一样

for items in entry_list: 
    do something 

''.join(entry_list) 
+0

也很好,让我知道。谢谢! – Cuga

相关问题