我了解简单列表理解的工作原理,例如:
[x*2 for x in range(5)] # returns [0,2,4,6,8]
而且我也了解嵌套列表的综合工作原理:
w_list = ["i_have_a_doubt", "with_the","nested_lists_comprehensions"]
# returns the list of strings without underscore and capitalized
print [replaced.title() for replaced in [el.replace("_"," ")for el in w_list]]
所以,当我尝试这样做
l1 = [100,200,300]
l2 = [0,1,2]
[x + y for x in l2 for y in l1 ]
我期望这样:
[100,201,302]
但是我得到了:
[100,200,300,101,201,301,102,202,302]
所以我有更好的方法解决问题,这给了我我想要的
[x + y for x,y in zip(l1,l2)]
但是我不明白在第一个代码中返回9个元素
它有9个数字的原因是因为python对待
[x + y for x in l2 for y in l1 ]
类似于
for x in l2:
for y in l1:
x + y
即,它是一个嵌套循环
问题内容: 我有这个嵌套列表: 现在,我要做的是将列表中的每个元素转换为float。我的解决方案是这样的: 但这可以使用嵌套列表理解来完成吗? 我所做的是: 但是结果是一堆100的总数为2400。 任何解决方案,解释将不胜感激。谢谢! 问题答案: 这是使用嵌套列表理解的方法: 这将为你提供一个列表列表,与你开始时的列表类似,只是使用浮点数而不是字符串。如果你想要一个固定列表,则可以使用。
问题内容: 我试图在一个内部列表中使用外部列表理解的值: 但是不幸的是,这会引发NameError,因为名称是未知的(尽管外部列表理解指定了该名称)。 这是Python的局限性(尝试过2.7.3和3.2.3)还是有充分的理由解释为什么它不起作用? 是否有计划摆脱限制? 是否有解决方法(可能我没有弄清楚一些不同的语法)来实现我想要的? 问题答案: 您在谈论列表 推导 ,而不是生成器表达式。 您需要交
问题内容: 解释我的问题的最好方法是举一个例子: example.py: 当我在python 2下运行它时,它工作正常,但是在python 3下,我得到了for类(但不是class ): 为什么只有class会引发a ,为什么只在Python 3下? 问题答案: 类作用域在Python 3中有点奇怪,但这是有充分理由的。 在Python 2中,迭代变量(以及您的示例中)从列表理解中泄漏出来,并将包
问题内容: 我想了解嵌套列表的理解。下面,我列出了一个列表理解表达式及其for循环等效项。 我不知道我的理解是否正确。 例如, 相当于 如果可以概括一下,我猜 表格可以翻译为以下内容。(我希望我是对的) 对于更简单的情况, 等于 而, 等于 我问了一个类似的问题,即用于复杂列表理解 的循环表达式的等效项。那里给出的答案是在理解了表单内部的内容之后重构了表单。 我想知道它是如何系统地工作的,因此我可
问题内容: 我知道如何得到两个平面列表的交集: 但是当我必须找到嵌套列表的交集时,我的问题就开始了: 最后,我希望收到: 你们能帮我这个忙吗? 问题答案: 如果你想: 然后这是你的Python 2解决方案: 在Python 3 返回一个迭代,而不是,所以你需要用filter与呼叫list(): 说明: 过滤器部分接受每个子列表的项目,并检查它是否在源列表c1中。对c2中的每个子列表执行列表推导。
问题内容: 谁能告诉我如何在嵌套列表中调用索引? 通常我只写: 但是如果我有一个带有嵌套列表的列表,如下所示: 我想分别浏览每个索引? 问题答案: 如果您确实需要索引,则可以按照内部列表再次执行以下操作: 但是遍历列表本身是更pythonic的: 如果您确实需要索引,也可以使用: