Questions tagged «list-comprehension»

语法构造提供了一种简洁的方式来创建类似于数学集合生成器符号的样式的列表。由于多种语言都支持列表理解,因此请将此标记与编程语言的标记结合使用。

3
使用列表理解嵌套循环
如果我有两个字符串'abc'和'def',则可以使用两个for循环获取它们的所有组合: for j in s1: for k in s2: print(j, k) 但是,我希望能够使用列表理解来做到这一点。我已经尝试了许多方法,但是从未尝试过。有谁知道如何做到这一点?

2
list()比列表理解使用更多的内存
因此,我在玩list对象时发现一点奇怪的事情:如果list用list()它创建的东西比列表理解力要占用更多的内存?我正在使用Python 3.5.2 In [1]: import sys In [2]: a = list(range(100)) In [3]: sys.getsizeof(a) Out[3]: 1008 In [4]: b = [i for i in range(100)] In [5]: sys.getsizeof(b) Out[5]: 912 In [6]: type(a) == type(b) Out[6]: True In [7]: a == b Out[7]: True In [8]: sys.getsizeof(list(b)) Out[8]: 1008 从文档: …

13
python列表理解;压缩列表列表?
伙计们 我正在尝试找到问题的最优雅解决方案,并且想知道python是否为我想做的事情内置了任何东西。 我正在做的是这个。我有一个列表,A并且我有一个f接受项目并返回列表的函数。我可以使用列表推导来转换所有内容,A例如: [f(a) for a in A] 但这返回一个列表列表; [a1,a2,a3] => [[b11,b12],[b21,b22],[b31,b32]] 我真正想要的是获取扁平化的列表; [b11,b12,b21,b22,b31,b32] 现在,其他语言也有它。传统上flatmap用函数式编程语言来称呼它,而.Net则称它为SelectMany。python有类似的东西吗?有没有一种巧妙的方法可以将函数映射到列表并展平结果? 我要解决的实际问题是:从目录列表开始,查找所有子目录。所以; import os dirs = ["c:\\usr", "c:\\temp"] subs = [os.listdir(d) for d in dirs] print subs currentliy给了我一个列表列表,但是我真的想要一个列表。

1
列表理解和生成器表达式的收益
以下行为对我来说似乎很违反直觉(Python 3.4): >>> [(yield i) for i in range(3)] <generator object <listcomp> at 0x0245C148> >>> list([(yield i) for i in range(3)]) [0, 1, 2] >>> list((yield i) for i in range(3)) [0, None, 1, None, 2, None] 最后一行的中间值实际上并不总是None,它们是send生成器中使用的值,相当于(我想)以下生成器: def f(): for i in range(3): yield (yield i) 这三行代码完全起作用使我感到很有趣。该参考指出,yield仅在一个函数定义允许的(虽然我可能读错和/或它可能只是已经从旧版本复制)。前两行在SyntaxErrorPython 2.7中产生a ,但第三行却没有。 …

4
PHP是否具有与Python的列表理解语法等效的功能?
Python在语法上具有甜美的列表理解能力: S = [x**2 for x in range(10)] print S; [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] 在PHP中,我需要做一些循环: $output = array(); $Nums = range(0,9); foreach ($Nums as $num) { $out[] = $num*=$num; } print_r($out); 要得到: 数组([0] => 0 [1] => 1 [2] => 4 [3] => 9 …

2
了解嵌套列表理解
我想了解嵌套列表的理解。下面,我列出了一个列表理解表达式及其for循环等效项。 我不知道我的理解是否正确。 例如, [(min([row[i] for row in rows]),max([row[i] for row in rows])) for i in range(len(rows[0]))] 相当于 result=[] for i in range(len(rows[0])): innerResult=[] for row in rows: innerResult.append(row[i]) innerResult2=[] for row in rows: innerResult2.append(row[i]) tuple=(min(innerResult), max(innerResult2)) result.append(tuple) 如果可以概括一下,我猜 [exp2([exp1 for x in xSet]) for y in ySet] 表格可以翻译为以下内容。(我希望我是对的) result=[] for …

4
为什么Pylint不喜欢内置函数?
我有这样一行: filter(lambda x: x == 1, [1, 1, 2]) Pylint显示警告: W: 3: Used builtin function 'filter' 这是为什么?列表理解是推荐的方法吗? 我当然可以这样重写: [x for x in [1, 1, 2] if x == 1] 而且我没有收到任何警告,但是我想知道是否为此有PEP?

4
如果只有一个结果,可以替代列表理解
我开始习惯于在Python中列出理解,但恐怕我使用不当。我遇到了几次使用列表推导但立即从生成的列表中获取第一个(也是唯一一个)项目的情况。这是一个例子: actor = [actor for actor in self.actors if actor.name==actorName][0] (self.actors包含一个对象列表,我正在尝试使用具有特定(字符串)名称的对象,该名称在actorName中。) 我试图从与我要寻找的参数匹配的列表中拉出对象。这种方法不合理吗?悬吊的[0]使我感到有点不安全。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.