我是 python 的新手,正在阅读一些 Sublime Text 插件的代码,并遇到了一些我不熟悉的代码。
views = [v for v in sublime.active_window().views()]
这是我不明白的“[v for v”部分。这段代码到底在做什么?
提前致谢!
请您参考如下方法:
这是一个列表理解。它等同于(但效率更高):
views = []
for v in sublime.active_window().views():
views.append(v)
请注意,在这种情况下,他们应该只使用 list:
views = list(sublime.active_window().views())
在python2.7中引入了其他类型的理解:
集合理解:
{x for x in iterable}
和听写理解:
{k:v for k,v in iterable_that_yields_2_tuples}
因此,这是创建所有值为 1 的字典的低效方法:
{k:1 for k in ("foo","bar","baz")}
最后python也支持generator expressions (它们至少在 python2.6 中可用——我不确定它们是何时引入的):
(x for x in iterable)
这类似于列表理解,但它返回一个可迭代对象。在您实际迭代它们之前,生成器并不是特别有用。优点是生成器会即时计算值(而不是将值存储在列表中,稍后您可以对其进行迭代)。它们的内存效率更高,但在某些情况下它们的执行速度比 list-comps 慢 -- 在其他情况下,它们胜过 list-comprehensions 因为它很容易说 -- 请给我前 3 个元素 -- 而使用 list comprehension ,您必须预先计算所有元素,这有时是一个昂贵的过程。
