本人新手,在leetcode刷题过程中出现过很多问题,也发现了很多方法,故在此总结,不定时更新。
1、在创建一个二维列表的时候,我之前会用 a = [[0] * 5] * 5, 但是这样输出的结果往往会跟期待的不一样,我一直以为是我的程序有问题,百度了很久也不知道错误在哪儿,后来看见别人的解法,自己换了一个创建并初始化列表的代码,结果就可以运行了,出错的原因就是:[[]]是一个含有一个空列表元素的列表,所以[[]]*3表示3个指向这个空列表元素的引用,修改任何一个元素都会改变整个列表。所以我现在常用的方法就是用列表生成式:a = [[0] * 5 for _ in xrange(5)] 链接:http://www.cnblogs.com/btchenguang/archive/2012/01/30/2332479.html
2、其实和1一样,已知b列表,在我想要执行复制列表b并修改复制后的列表a的时候(a = b) ,如果我改变a之后b的值也会改变,因为他们现在是指向同一个列表,如果要复制可以执行 a = b[:],采用分片操作。
3、今天在进行分片赋值的时候出现了TypeError: 'int' object is not iterable的错误,源代码为:
在执行分片赋值的时候必须要是列表
4、zip函数的应用,推荐一个别人写的好的。链接:http://www.cnblogs.com/frydsh/archive/2012/07/10/2585370.html
5、map(x,y)函数,前一个为函数名,后一个为带入的数等,但是这个函数效率较低
6、两个列表相加,[1,2,3]+[4,5,6] = [1,2,3,4,5,6] 可以省去一些麻烦