Python中嵌套列表增加元素小结

Posted nanke_yh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python中嵌套列表增加元素小结相关的知识,希望对你有一定的参考价值。

目录

一、引言

二、列表元素操作

三、相关问题分析

3.1预期

3.2现象

四、解决方法

4.1对于复制赋值,保持原列表不改变的方法:

4.2那么对于嵌套类型的列表,该如何增加元素呢


一、引言

    在实现杨辉三角案例过程中,将每一层的数存为一个templist,并最终归结到一个大列表list中来保存。随着层数增加,则需要循环向列表list中增加元素templist。此时发现循环后消除templist也会改变list中的元素。为此做出相关的研究和探索,即python中将一个列表作为另一个嵌套列表的元素添加进去,但不能随着改变该列表而改变了嵌套列表。

二、列表元素操作

python列表函数
序号函数
1len(list)
列表元素个数
2max(list)
返回列表元素最大值
3min(list)
返回列表元素最小值
4list(seq)
将元组转换为列表
python列表方法
序号方法
1list.append(obj)
在列表末尾添加新的对象
2list.count(obj)
统计某个元素在列表中出现的次数
3list.extend(seq)
在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
4list.index(obj)
从列表中找出某个值第一个匹配项的索引位置
5list.insert(index, obj)
将对象插入列表
6list.pop([index=-1])
移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
7list.remove(obj)
移除列表中某个值的第一个匹配项
8list.reverse()
反向列表中元素
9list.sort( key=None, reverse=False)
对原列表进行排序
10list.clear()
清空列表
11list.copy()
复制列表

三、相关问题分析

3.1预期

>>> mylist2 = [1,2,1]
>>> mylist1 = [[1],[1,1]]
>>> #预期是mylist1[[1],[1,1],[1,2,1]],并在之后需清空mylist2,而mylist1不改变

3.2现象

1、使用append添加,在使用clear去清除mylist2,会发现mylist1也随之改变:

>>> mylist1.append(mylist2)
>>> print(mylist1)
[[1], [1, 1], [1, 2, 1]]
>>> mylist2.clear()
>>> print(mylist1)
[[1], [1, 1], []]

2、使用copy呢:是直接赋值,而不是添加元素

>>> mylist1 = mylist2.copy()
>>> print(mylist1)
[1, 2, 1]

3、直接加:看起来相似,实际不对,没有增加元素个数,而是将mylist1作为整体存为一个元素。

>>> mylist1 = [mylist1,mylist2]
>>> print(mylist1)
[[[1], [1, 1]], [1, 2, 1]]

4、综合现象:

1)、通过 clear() 方法,remove() 方法,pop() 方法,append() 方法等改变列表的,相应的已经赋值给其它变量的列表也会被清空。

2)、使用del将直接删除该变量,使得下次无定义

3)、当列表list1使用copy()方法被复制到另一个列表list2时,使用clear()方法清空原列表list1,列表list2不会被清空,即不会影响复制列表。(直接赋值操作)

四、解决方法

4.1对于复制赋值,保持原列表不改变的方法:

1、使用切片方法复制列表

cities1 = ["Guangzhou","Beijing","Shanghai","Nanjing"]

cities2 = cities1[:]

cities1.insert(1,"Xiamen")#改变cities2,而cities1不改变

2、使用copy函数复制列表

cities1 = ["Guangzhou","Beijing","Shanghai","Nanjing"]

cities2 = cities1.copy()

cities1.insert(1,"Xiamen")#改变cities2,而cities1不改变

3、使用for循环方法复制

cities1 = ["Guangzhou","Beijing","Shanghai","Nanjing"]

cities2 = [i for i in cities1]

cities2.append("Kunming")#改变cities2,而cities1不改变

4.2那么对于嵌套类型的列表,该如何增加元素呢

这里借鉴以上,将主要使用切片方法去赋值,并用插入函数增加嵌套列表元素:

>>> mylist1 = [[1],[1,1]]
>>> mylist2 = [1,2,1]
>>> mylist1.insert(2,mylist2[:])
>>> print(mylist1)
[[1], [1, 1], [1, 2, 1]]
>>> mylist2.clear()
>>> print(mylist2)
[]
>>> print(mylist1)
[[1], [1, 1], [1, 2, 1]]
>>> 

如此,就可以实现上面嵌套列表mylist1元素的增加,mylist1不会因mylist2列表的改变而改变。

以上是关于Python中嵌套列表增加元素小结的主要内容,如果未能解决你的问题,请参考以下文章

p2·python中嵌套列表list元素输出·模块封装·发布上传(pigeon详细说)

Python:嵌套列表中元素的索引列表

13 个非常有用的 Python 代码片段

Python代码阅读(第13篇):检测列表中的元素是否都一样

python中flat将嵌套列表中的元素按顺序排列在一个列表中

Python实现对列表中重复元素进行去重的方法小结