回答
对我来说,例子有所不同。列表解析可能不会自然而然地发生,直到你用它们来解决一个或两个for loop
解决不了的问题。
的几点思考(其他人可能有更好的例子):
- 给出的单词的列表中,找到长度为5
- 鉴于号码列表的话,返回素数的子集,乘以2
- 给定幸运饼干语录(或推文)的列表,返回一个长度不超过10个单词的说明列表,并在每个结尾添加“在床上”。
List内涵是相同的概念,思考一个for循环,除了他们是在同一行,你可以在线使用它们作为参数。
myFunc([s.strip() for s in mystrings])
发电机组补充不会立即在内存中创建列表。他们步的值,当你遍历他们,可以更有效率,如果你将提前停止遍历他们不需要将整个结果马上
这里就是我想通过列表解析。
1)我需要输出列表
2)我开始与列表/迭代。
3)我要么需要上的所有元素执行操作和/或选择从原来的名单的具体内容。
这使我下面的结构:
output = [ mangle(x) for x in selector(input)]
裂伤()是一些功能改变的元素。例如,我可能使用x.lower()
来使元素小写。
我总是使用x
作为迭代器。只是保持一致(并且我从不将它用作for
循环中的迭代器)。
选择器()是输出True
或False
的功能。通常这会是某种if语句。我主要使用这个存在的测试,特别是如果我是mangling
输出。例如,x for x in input if input
。
列表解析可能非常好。我认为他们真的提高了可读性,而且不仅仅是一个巧妙的技巧。但请记住,它们只不过是一个for循环内联。
尝试编写循环并尝试将它们转换为列表理解可能是最容易的。
如果你刚刚开始使用列表解析,这是我的头脑。首先写你的循环正常:
results = []
# get all keys that aren't test strings and add to results list
for a in blah.keys():
if a not in ('test', 'foo'):
results.append(a)
我们创建一个列表理解,离开for循环,如果以相同的顺序发言,并把它们放在同一行,把“最终结果”的代码在开始:
results = [ results.append(a) for a in blah.keys() if a not in ('test', 'foo') ]
我们快到了!我们并不需要手动添加(a)根据什么我们把表达的那部分将自动被添加到列表中,因此最终表达式为:
# get all keys that aren't test strings and add to results list
results = [ a for a in blah.keys() if a not in ('test', 'foo') ]
HTH!
当我需要比较elemts两个甚至更多的单独列表。它变成了一种嵌套的理解。然后我被吹走了。需要花费很多时间来思考,测试闲置然后运行。有没有优雅的思维方式,所以它只是走了。我相信会有,我认为这使得它看起来很复杂...你的想法是什么,使用理解的想法。 – Ashish 2012-01-12 06:43:32
你有没有例子? – fileoffset 2012-01-19 05:01:47
- 1. Python的3.x的列表理解VS元组发电机
- 2. 的Python:如果列表解析里声明发电机
- 3. 在列表理解或发电机使用,而表达式
- 4. 发电机v/s返回列表 - Python
- 5. 如何在Python中重写这个列表理解?
- 6. 列表与发电机理解速度加入功能
- 7. Python随机排序的列表理解
- 8. Python列表理解
- 9. 列表理解python
- 10. R列表中的Python列表理解?
- 11. Go列表中的Python列表理解
- 12. Python列表理解如何做
- 13. 如何使用列表理解在python中扩展列表?
- 14. 如何处理Python中的列表理解中的异常?
- 15. 改写单列表理解
- 16. 传发电机VS列表为Python任何
- 17. 如何在Python中分解这个列表理解?
- 18. 发电机理解究竟如何工作?
- 19. 嵌套`if`的``for`的Matlab简写(如Python的列表理解)
- 20. Python lambda与列表理解
- 21. 在Python列表理解
- 22. 包括Python列表理解
- 23. Python列表理解 - 移调
- 24. 高级Python列表理解
- 25. Python列表理解错误
- 26. 与Python列表理解
- 27. Python列表理解错误
- 28. Python,迭代列表理解
- 29. Python列表理解和SQLALCHEMY
- 30. Python不会理解列表
不错,但关于'selector(input)'是函数的部分在我看来有点误导。 – wim 2012-01-12 05:17:11
> 3)我需要对所有元素执行操作和/或从原始列表中选择特定元素。 'output = [mangle(x)for x in selector(input)]'< ->'output = [mangle(x)for x in selector(input)if check(x)]' – warvariuc 2012-01-12 06:11:28