Python作为高级语言,会帮助使用者处理一些和业务逻辑不是很相关的事情,能够让程序员专注于自己想要做的事情,节省程序员时间,但是缺陷很明显,那就是使用者并不清楚底层的原理,有时候会出现一些难以发现,莫名其妙的问题。这里做一些总结,方便遇到类似问题的同学查阅。
二维数组的初始化问题Python中list对象在创建的时候,指针指向的只有这个列表本身,如果这个列表中嵌套了列表,那么对这个列表的所有操作都会被map到列表中所有的元素上。比如:
temp_list = [[0,0],[0,0]] temp_list[0][0]=1 print(temp_list) >> [[1,0],[1,0]]
看到了吧,这个特性简直了。所以,一定一定不能采用嵌套列表的形式来构建二维数组,否则将无法正常索引这个二维数组!!!
我美团的笔试就是因为这个问题搞心态才挂掉的,唉
temp_list=[0]*5 temp_list=[temp_list]*5]
这样够简单二维数组本质上还是一个一维数组。
那该怎么构建二维数组?其实Python的优势在于可以使用众多功能强大的库,但是在算法题中只能使用标准库,所以Python的优势其实是发挥不出来的。具体做法:
#std temp_list = [] for i in range(m): temp_ele = [] for i in range(n): temp_ele.append(0) temp_list.append(temp_ele)
[待更新]


![[Python] Python中的设计缺陷导致的天坑汇总 [Python] Python中的设计缺陷导致的天坑汇总](http://www.mshxw.com/aiimages/31/360448.png)
