list的list重复操作问题([[]]*n)
2017-09-21 16:59
197 查看
python 可以通过[var]*n 的方式复制列表中的值,如:
但是今天使用列表作为列表元素进行重复操作时遇到了问题:
上面的代码中我希望通过重复操作创建一个包含有m个list的list,但是当我对元素中的list进行append操作时如
发现a中每一个list都append了一个1,上面的代码,现在a = [[1],[1],[1],[1]],但是其实我希望得到的结果是a = [[1],[],[],[]],细想了一下根据python的尿性,做重复操作时,作为元素的list并不是拷贝一份,而是同一个list的不同引用,所以对一个元素操作,其他元素也会被影响到。
所以现在想生成不定个数list作为元素的list只能这样
如果元素是数字,元素是被拷贝的,不会像list这样
得到的结果是 [2,1,1,1]
[1]*4 #得到[1,1,1,1]
但是今天使用列表作为列表元素进行重复操作时遇到了问题:
def showResult(dataset,centrids,clusterAssment): m,_ = shape(centrids) xcord = [[]]*m;ycord=[[]]*m n = shape(dataset)[0] for i in range(n): xcord[int(clusterAssment[i][0])].append(dataset[i][0]) ycord[int(clusterAssment[i][0])].append(dataset[i][1]) ...
上面的代码中我希望通过重复操作创建一个包含有m个list的list,但是当我对元素中的list进行append操作时如
a = [[]]*4 a[0].append(1)
发现a中每一个list都append了一个1,上面的代码,现在a = [[1],[1],[1],[1]],但是其实我希望得到的结果是a = [[1],[],[],[]],细想了一下根据python的尿性,做重复操作时,作为元素的list并不是拷贝一份,而是同一个list的不同引用,所以对一个元素操作,其他元素也会被影响到。
所以现在想生成不定个数list作为元素的list只能这样
x = [[] for i in range(m)]
如果元素是数字,元素是被拷贝的,不会像list这样
x = [1]*4 x[0] += 1 print x
得到的结果是 [2,1,1,1]
相关文章推荐
- checkbox在jquery版本1.9 以上用attr不可重复操作的问题
- checkbox在jquery版本1.9 以上用attr不可重复操作的问题【附解决方案】
- 重复操作导致的线上问题
- List remove操作注意问题
- spark-DataFrame学习记录-[2]解决spark-dataframe的JOIN操作之后产生重复列(Reference '***' is ambiguous问题解决)
- 剔除List 里重复值的问题
- [WEB前端开发]-关于Velocity中Map与List操作-解决velocity无法识别Map对象key的问题
- NSOperation之为操作缓冲池解决操作重复添加操作的问题——UItabView的Cell数据下载并刷新的案例
- 通过vc 操作excel时避免重复定义的问题
- Set剔除重复数据和List的排序问题
- 【数据结构 _双向链表_List_0960】双向链表的操作问题
- poj 3735 大数量重复操作问题(矩阵快速幂)
- LeetCode-Remove Duplicates from Sorted List II-从有序链表中移除重复元素-链表操作
- js之list解决jsp或者html一组数据的重复问题
- 字符串操作问题:查找给定字符串中,连续重复且长度最长的第一个子串
- 关于List集合使用 Linq 操作问题
- 关于使用js进行表单提交操作引发的表单重复提交问题
- 解决学生信息管理系统之List列表中重复添加相同数据问题。
- 关于list中存储map数据重复问题
- python list 去重重复元素问题