2024-04-19 10:49:12 发布
网友
我是python新手,在阅读一个高级文本插件的一些代码时遇到了一些我不熟悉的代码。你知道吗
views = [v for v in sublime.active_window().views()]
这是我不明白的“[v对v”部分。这段代码到底在干什么?你知道吗
提前谢谢!你知道吗
那是一份清单。相当于(但效率高于):
views = [] for v in sublime.active_window().views(): views.append(v)
注意,在这种情况下,他们应该只使用list:
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)
这类似于列表理解,但它返回一个iterable对象。生成器在您实际遍历它们之前并不是特别有用。其优点是生成器可以动态地计算值(而不是将值存储在一个列表中,您可以稍后进行迭代)。它们的内存效率更高,但在某些情况下执行速度比列表comp慢。在其他情况下,它们比列表理解更出色,因为很容易说,请给我前3个元素,而对于列表理解,您必须预先计算所有元素,这有时是一个昂贵的过程。你知道吗
这是一个list comprehension。这有点像带有内联for循环的表达式,用于动态创建快速列表。在本例中,它创建了sublime.active_window().views()返回的列表的浅层副本。你知道吗
sublime.active_window().views()
当你需要转换每一个值时,列表理解真的很有用。例如,下面是获得前十个完美正方形的快速列表:
[x*x for x in range(1,11)]
那是一份清单。相当于(但效率高于):
注意,在这种情况下,他们应该只使用
list
:python2.7中还引入了其他类型的理解:
集合理解:
和听写理解:
因此,创建所有值都为1的字典是一种低效的方法:
最后,python还支持generator expressions(它们在python2.6中可用,至少我不确定它们是何时引入的):
这类似于列表理解,但它返回一个iterable对象。生成器在您实际遍历它们之前并不是特别有用。其优点是生成器可以动态地计算值(而不是将值存储在一个列表中,您可以稍后进行迭代)。它们的内存效率更高,但在某些情况下执行速度比列表comp慢。在其他情况下,它们比列表理解更出色,因为很容易说,请给我前3个元素,而对于列表理解,您必须预先计算所有元素,这有时是一个昂贵的过程。你知道吗
这是一个list comprehension。这有点像带有内联for循环的表达式,用于动态创建快速列表。在本例中,它创建了
sublime.active_window().views()
返回的列表的浅层副本。你知道吗当你需要转换每一个值时,列表理解真的很有用。例如,下面是获得前十个完美正方形的快速列表:
相关问题 更多 >
编程相关推荐