![Python自然语言处理(微课版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/869/44509869/b_44509869.jpg)
3.7.2 操作
下面介绍列表操作。
1.创建列表
使用“=”将一个列表赋值给变量。
>>>a_list=['a', 'b', 'c']
2.读取元素
(1)读取某个元素:用列表名加元素序号。
序列中的每个元素被分配一个序号,即元素的位置,也称为索引。从左至右依次是0,…,n,从右向左计数来存取元素称为负数索引,依次是-1,-2,…,-n。li[-n]==li[len(list)-n]。
【例3-9】 列表索引。
![](https://epubservercos.yuewen.com/CC79B0/23721531409454406/epubprivate/OEBPS/Images/Figure-P64_11966.jpg?sign=1739045129-GZsFfroQSGWLLkv3tkjGBc0YERZZCnc3-0-933eba6f3f493f4e4b7a925f110d0e9d)
注意:Python从0开始计数。
(2)读取若干元素。
序列切片是指使用序列序号截取其中的任何部分从而得到新的序列。切片操作符是在[]内提供一对可选数字,用“:”分隔。冒号前的数字表示切片的开始位置,冒号后的数字表示切片截止(但不包含)位置。
注意:数字可选,冒号必需,开始位置包含在切片中,不包括结束位置。
【例3-10】 列表切片。
![](https://epubservercos.yuewen.com/CC79B0/23721531409454406/epubprivate/OEBPS/Images/Figure-P64_11084.jpg?sign=1739045129-McJn5tA5LgdZYkwybwOIXWw236cl7bYJ-0-c1f3c9c755dbc56ce1c8a65cd48d98d8)
3.修改元素
只需直接给元素赋值。
![](https://epubservercos.yuewen.com/CC79B0/23721531409454406/epubprivate/OEBPS/Images/Figure-P64_11086.jpg?sign=1739045129-uSb4qkmOkEanVL3WYWJSsKUwn7CflF6m-0-fdfb64faa77d872d6d7081959ba13312)
4.添加元素
列表添加元素有“+”、append()、extend()和insert()方法。
方法1:使用“+”将一个新列表附加在原列表的尾部。
![](https://epubservercos.yuewen.com/CC79B0/23721531409454406/epubprivate/OEBPS/Images/Figure-P64_11088.jpg?sign=1739045129-qoOvNdQqPSqv0Z33DUObtTMwQ7DduwHC-0-07b1c0086bf42feaed7b102721e8354b)
方法2:使用append()方法向列表尾部添加一个新元素。
![](https://epubservercos.yuewen.com/CC79B0/23721531409454406/epubprivate/OEBPS/Images/Figure-P64_11090.jpg?sign=1739045129-hxaUNZXTvC08jm9VmJGwdKcSwx9NJ8A3-0-9194daefbc1c5f5b9106b26e36e83a99)
方法3:使用extend()方法将一个列表添加在原列表的尾部。
![](https://epubservercos.yuewen.com/CC79B0/23721531409454406/epubprivate/OEBPS/Images/Figure-P65_11968.jpg?sign=1739045129-LTx2ixA1pzmZW64fowzcwt27Oyl86Hix-0-b60f71d1f08b79811ac2315c8168fa0b)
方法4:使用insert()方法将一个元素插入列表的任意位置。
![](https://epubservercos.yuewen.com/CC79B0/23721531409454406/epubprivate/OEBPS/Images/Figure-P65_11970.jpg?sign=1739045129-0tA0kem3hsCpmiG2a6SnDI8fK5VSi3h2-0-c539148bf9930a9475629220f0247c29)
【例3-11】 比较“+”和append()两种方法。
![](https://epubservercos.yuewen.com/CC79B0/23721531409454406/epubprivate/OEBPS/Images/Figure-P65_3886.jpg?sign=1739045129-nLRrSJPK1jTvB3C08C2EKP7P7l7MhED0-0-56197a752628652c9dc2b2ba6d1f5864)
程序运行结果如下。
+操作执行10000次,用时0.2020115852355957 append操作执行10000次,用时0.0009999275207519531
【例3-12】 比较insert()和append()两种方法。
![](https://epubservercos.yuewen.com/CC79B0/23721531409454406/epubprivate/OEBPS/Images/Figure-P65_11092.jpg?sign=1739045129-rWfnuByGzhYq4asXdxdhZSzd20b8nbea-0-6d716d5a41767d4de276203d2edb82cd)
程序运行结果如下。
Insert: 0.578000068665 Append: 0.0309998989105
5.删除元素
列表删除元素有del、remove()和pop()方法。
方法1:使用del语句删除某个特定位置的元素。
![](https://epubservercos.yuewen.com/CC79B0/23721531409454406/epubprivate/OEBPS/Images/Figure-P66_11976.jpg?sign=1739045129-ll2rUNJik1XjHzsmNCJWXfDKk1sG2TDM-0-b08c4467f9bc00e9628760f91f2fc84a)
方法2:使用remove()方法删除某个特定值的元素。
![](https://epubservercos.yuewen.com/CC79B0/23721531409454406/epubprivate/OEBPS/Images/Figure-P66_11978.jpg?sign=1739045129-ZvFdKJimPtYsRBfzegOFbwQ6P65wnHZC-0-bba59509835475f29f8221022d302770)
【例3-13】 比较两组代码。
![](https://epubservercos.yuewen.com/CC79B0/23721531409454406/epubprivate/OEBPS/Images/Figure-P66_11093.jpg?sign=1739045129-APrq1dTJsA2CpPWwicxKzBplyMcwPJuo-0-0aeb4269a8fa59fa1261ebec9a2f3b83)
同样的代码,仅仅是处理的列表数据不同,结果不同。两组数据的区别在于有没有连续的“1”。由于列表的自动内存管理功能,删除列表元素,Python会自动对列表内存进行收缩并移动列表元素,以保证所有元素之间没有空值。增加列表元素时也会自动扩展内存并对元素进行移动,以保证元素之间没有空值。每当插入或删除一个元素之后,该元素位置后面所有元素的索引都会改变。
为此,修改正确的代码如下。
![](https://epubservercos.yuewen.com/CC79B0/23721531409454406/epubprivate/OEBPS/Images/Figure-P67_11094.jpg?sign=1739045129-kPxcaX4rXvoN8UTTcRQe6S3GMuHvxRDd-0-0e0bbef416f47e214641901420a982c1)
方法3:使用pop()方法弹出指定位置的元素,省略参数时弹出最后一个元素。
![](https://epubservercos.yuewen.com/CC79B0/23721531409454406/epubprivate/OEBPS/Images/Figure-P67_11096.jpg?sign=1739045129-iL7plaF0PMaoQEshEQIYpedialSgRJDS-0-f3feac909193a5a963908385c970d7f3)
6.得到列表中指定元素的下标
![](https://epubservercos.yuewen.com/CC79B0/23721531409454406/epubprivate/OEBPS/Images/Figure-P67_11098.jpg?sign=1739045129-cpEhHwfdnZ3Ao82ITHXgM9B5MssyPNFc-0-9816d8eaeec465e8996d1b68b03cfa84)
列表方法如表3-13所示。
表3-13 列表方法
![](https://epubservercos.yuewen.com/CC79B0/23721531409454406/epubprivate/OEBPS/Images/Figure-T68_10979.jpg?sign=1739045129-QSmno1gWa2zx4hYPQwyALOxYUKKxTNrj-0-3b0a71589bd325341c183677a08f9492)