list comprehensions

2011-10-07 列表解析 python很优雅的东西,今天从cookbook稍微深的理解下它,举例: >>> multi = [[0] * 5] * 3 >>> print multi [[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]] >>> multi[0][0] = 'oh shit' >>> print multi [['oh shit', 0, 0, 0, 0], ['oh shit', 0, 0, 0, 0], ['oh shit', 0, 0, 0, 0]] 使用 * 运算符获得的列表指向同一个列表对象,oh shit! 用列表解析看效果: multi = [[0]*5 for row in range(3)] >>> multi[0][0] = 'oh yeah' >>> print multi ['oh yeah', 0, 0, 0, 0], [0, 0, 0, 0, 0]], [0, 0, 0, 0, 0]] 双重列表解析的效率没有 单重的快: multilist = [[0 for col in range(5)] for row in range(10)] multilist = [[0]*5 for row in range(10)] 但表达更清晰 更对称 列表解析常用于更改列表,而不是重新new一个列表 L[:] = [min(x,100) for x in L] 和 L = [min(x,100) for x in L] 是不同的 L[:] 更改已存在的 L的元素 而第二种写法 L = [min(x,100) for x in L] 则是重新绑定一个列表到L 例子基本取自 cookbook , 猴年马月才能看完它啊。。。。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏视觉求索无尽也

【Python】Python知识点总结

字典{key:value,key:value},dict(key=value,key=value):

4531
来自专栏QQ音乐技术团队的专栏

谁创建谁销毁,谁分配谁释放——JNI调用时的内存管理

在QQ音乐AndroidTV端的Cocos版本的开发过程中,我们希望尽量多的复用现有的业务逻辑,避免重复制造轮子。因此,我们使用了大量的JNI调用,来实现Jav...

4606
来自专栏linux驱动个人学习

inline函数不能在for循环中使用的原因

inline函数的作用继承了宏定义的优点,没有了参数压栈,代码生成等一部分操作,并且摒弃了没有检查编译规则的缺点; 另外要注意,内联函数一般只会用在函数内容非常...

3494
来自专栏程序员的SOD蜜

实例探究字符编码:unicode,utf-8,default,gb2312 的区别

 最近做邮件收发,不同的邮件系统间可能会出现编码问题,迫使我重新回来研究一下字符的编码问题,unicode,utf-8,gb2312这些编码格式都是我们熟知的,...

24410
来自专栏GreenLeaves

Flyweight享元模式(结构型模式)

虽然OOP能很好的解决系统抽象的问题,并且在大多数的情况下,也不会损失系统的性能。但是在某些特殊的业务下,由于对象的数量太多,采用面向对象会给系统带来难以承受的...

1082
来自专栏有趣的django

11.Flask钩子函数

     在Flask中钩子函数是使用特定的装饰器的函数。为什么叫做钩子函数呢,是因为钩子函数可以在正常执行的代码中,插入一段自己想要执行的代码,那么这种函数就...

1063
来自专栏JetpropelledSnake

Python面试题之Python反射机制

 我们要导入另外一个模块,可以使用import.现在有这样的需求,我动态输入一个模块名,可以随时访问到导入模块中的方法或者变量,怎么做呢?

3072
来自专栏Python入门

30个Python程序员需要知道的编程技巧,可以让你的工作事半功倍!

在上面代码中,赋值的右侧形成了一个新元组,而左侧则立刻将该(未被引用的)元组解包到名称<a>和<b>。

740
来自专栏xingoo, 一个梦想做发明家的程序员

数字按照不同格式转换成字符串

  如果自己写函数,不使用itoa怎么判断呢?   我们用通常的办法,对数字进行每位的除商,得到后与字符'0'相加。 flag = 0; ...

21110
来自专栏微信公众号:Java团长

理解Java虚拟机体系结构

  众所周知,Java支持平台无关性、安全性和网络移动性。而Java平台由Java虚拟机和Java核心类所构成,它为纯Java程序提供了统一的编程接口,而不管下...

1366

扫码关注云+社区

领取腾讯云代金券