我是靠谱客的博主 震动硬币,最近开发中收集的这篇文章主要介绍python列表解析不写for循环do something,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

不用for循环,循环五次,取个随机值

result = [random.randint(1,100) for x in range(5)]

result = [[random.randint(1,100) for x in range(5)] for y in range(5)]

 

参考:

Python 的列表解析(list comprehension)和生成器表达式(generator expression)

列表解析:
语法:[expr for iter_var in iterable] 或 [expr for iter_var in iterable if cond_expr]

说明:
第一种语法:首先迭代iterable里所有内容,每一次迭代,都把iterable里相应内容放到iter_var中,再在表达式中应用该iter_var的内容,最后用表达式的计算值生成一个列表。
第二种语法:加入了判断语句,只有满足条件的内容才把iterable里相应内容放到iter_var中,再在表达式中应用该iter_var的内容,最后用表达式的计算值生成一个列表。

举例:
>>> [i + 1 for i in range(10)]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

>>> [i + 1 for i in range(10) if i % 2]
[2, 4, 6, 8, 10]

生成器表达式:
语法:(expr for iter_var in iterable) 或 (expr for iter_var in iterable if cond_expr)

说 明:列表解析是比较早的Python版本里就引进的(好像是2.0版本),而生成器表达式则是在2.4中引入的新内容,它和列表解析的语法很像,但是在大数据量处理时,生成器表达式的优势就体现出来了,因为它的内存使用方式更好,效率更高,它并不创建一个列表,只是返回一个生成器。当然,列表解析并不会被 遗弃。

举例:
>>> (i + 1 for i in range(10) if i % 2)
<generator object <genexpr> at 0x011DC5D0>

>>> g = (i + 1 for i in range(10) if i % 2)
>>> l = []
>>> for j in g:
l.append(j)
>>> l
[2, 4, 6, 8, 10]
从上面可看出,列表解析和生成器表达式语法虽然很像,但实质上还是有很大不同的。
Python可是很强大很优美很高效很简洁很有趣的,希望更多的人来认识它。

Some simple generators can be coded succinctly as expressions using a syntax similar to list comprehensions but with parentheses instead of brackets.

These expressions are designed for situations where the generator is used right away by an enclosing function.

Generator expressions are more compact but less versatile than full generator definitions and tend to be more memory friendly than equivalent list comprehensions.

参考:
Python Tutorial
http://home.ixpub.net/space.php?uid=16111523&do=blog&id=404460

转载于:https://www.cnblogs.com/beiming/archive/2012/01/04/2311665.html

最后

以上就是震动硬币为你收集整理的python列表解析不写for循环do something的全部内容,希望文章能够帮你解决python列表解析不写for循环do something所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部