我是Python新手,来自Java背景。我想知道编写此代码的最Pythonic方式:
entry_list = []
for entry in feed.entry:
entry_list.append(entry.title.text)
基本上对于Feed中的每个元素,我想将该元素的标题附加到列表中。
我不知道是否应该使用map()或lambda函数或者什么......
由于
答案 0 :(得分:8)
我能想到的大多数pythonic代码:
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比列表理解慢得多。
答案 1 :(得分:4)
通过一个基因的一点点诡计。
entry_list.extend(x.title.text for x in feed.entry)
如果您不需要保留相同的列表,则只需一个LC。
entry_list = [x.title.text for x in feed.entry]
答案 2 :(得分: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)