![Python数据分析从小白到专家](https://wfqqreader-1252317822.image.myqcloud.com/cover/745/38209745/b_38209745.jpg)
3.2.1 Python的列表
Python所特有的类型的成员或者所包含的元素是有序排列的,并且允许用户通过下标偏移量访问到它所包含的元素或成员。Python可以通过给定元素的办法初始化一个列表,也可以通过迭代器和for循环语句自动生成有序的元素组作为列表,示例如下:
![](https://epubservercos.yuewen.com/ED1E6A/20118172701012106/epubprivate/OEBPS/Images/40923_40_1.jpg?sign=1739288238-zuALR2XnEWWt76BN2JRFvMapYIWnf1Mx-0-d99d9f197a4af95970a6a0a7e23256a8)
输出结果:
![](https://epubservercos.yuewen.com/ED1E6A/20118172701012106/epubprivate/OEBPS/Images/40923_40_2.jpg?sign=1739288238-NQxyJMBe1uw0gNWkfmbIzu723Adq0vgl-0-000d6110e6908cee8d8073d10ea67807)
在该示例中使用了is语句判断lis和lis2是否为同一个变量。用户还可以用in和not in判断列表中是否包含某个元素,或者是否不含某个元素,示例如下:
![](https://epubservercos.yuewen.com/ED1E6A/20118172701012106/epubprivate/OEBPS/Images/40923_40_3.jpg?sign=1739288238-Nd86BFNmhySn9sZjdcDkVJhywm6NbKH7-0-7ea82f5d10b867d3f72e3f987d205b9a)
![](https://epubservercos.yuewen.com/ED1E6A/20118172701012106/epubprivate/OEBPS/Images/40923_41_1.jpg?sign=1739288238-oPqbZgW3NranJLhGEVmvSrRQg7cQBgi3-0-16a4f238fc4599f6f2bfd6236c9ce13c)
输出结果:
![](https://epubservercos.yuewen.com/ED1E6A/20118172701012106/epubprivate/OEBPS/Images/40923_41_2.jpg?sign=1739288238-ubMgaZ9SaWkoPnNmQM5XduZLN44kRnbE-0-d29c74dfe0da469a3e39985297db9590)
如果需要将一个序列重复多次,则可以使用星号(*)运算符。在下面的示例中,1~5这个序列重复了3次。
![](https://epubservercos.yuewen.com/ED1E6A/20118172701012106/epubprivate/OEBPS/Images/40923_41_3.jpg?sign=1739288238-EolUjXb0HSWI5HIbijER9fwfmccMQoh5-0-753960bca5d9ab21319d6f265b6481f5)
输出结果:
![](https://epubservercos.yuewen.com/ED1E6A/20118172701012106/epubprivate/OEBPS/Images/40923_41_4.jpg?sign=1739288238-Gik5QQRwkRUbArwoWenasYshjm7R8Aiz-0-00d5ab4bdcfd26c54cd5c5ca0313c7d9)
Python的列表作为一种数据类型,其中的元素按顺序依次放置。作为数组的“替代品”,它一定会有与数组类似的功能,即依照下标读取列表中存放的元素。不仅如此,Python的列表还可以通过类似字符串切片算法的原理,提取列表中一连串的元素,这是C/C++和Java所不能实现的。这种方式称为“切片操作”或“索引操作”,用中括号“[]”来表示,具体的语法如下:
![](https://epubservercos.yuewen.com/ED1E6A/20118172701012106/epubprivate/OEBPS/Images/40923_41_5.jpg?sign=1739288238-IyCMpVZPiwM2lwP1wvrLrnq3juscd4ZP-0-6ef2477b860bdd8feb689a97debe18c1)
List是被操作的列表;startIndex是切片开始的序号;endIndex是切片结束的序号;stepNumber是切片的间隔(或步长),默认为1,可以与第二个冒号一起省略。startIndex的默认值是0,可省略不写,即从第一个序号开始切片;endIndex默认是最后一个元素,序号是-1,使用的是逆序序列的索引。正序索引从0开始到n-1;而逆序索引从-1开始到-n。Python的列表的索引规则如图3-2所示。
![](https://epubservercos.yuewen.com/ED1E6A/20118172701012106/epubprivate/OEBPS/Images/40923_41_6.jpg?sign=1739288238-NCw4UUmZsuWN9X6iXnb3F1VeUulTUt0L-0-2fcd16801ecfc39e3bae604eec597fe4)
图3-2 Python的列表的索引规则
Python切片操作的简单示例如下所示。
![](https://epubservercos.yuewen.com/ED1E6A/20118172701012106/epubprivate/OEBPS/Images/40923_42_1.jpg?sign=1739288238-48Wh2OWc8y7iDVtosfUrgPxlpj6WAnJi-0-120fe5509457b5a221b149033aa1853e)
输出结果:
![](https://epubservercos.yuewen.com/ED1E6A/20118172701012106/epubprivate/OEBPS/Images/40923_42_2.jpg?sign=1739288238-lBtrFUfDkqPwKzVAgOosv0zwL7Sm2m9A-0-71571a4f142df09d0f0b7dd0000d40ea)
![](https://epubservercos.yuewen.com/ED1E6A/20118172701012106/epubprivate/OEBPS/Images/40923_43_1.jpg?sign=1739288238-JVVxl8k8QiDv63njkaMLooxcdxm8ihiE-0-9746974e64a251e2d35829fc76355149)
切片操作还可以和for循环语句结合使用,这里以输出一个金字塔的程序为例进行介绍,代码如下:
![](https://epubservercos.yuewen.com/ED1E6A/20118172701012106/epubprivate/OEBPS/Images/40923_43_2.jpg?sign=1739288238-aF7XO5eNIFYdnJWbwCcab4tfiLHHBrkM-0-ce33cd720e7cfa2a52c42bd447b9c81f)
输出结果:
![](https://epubservercos.yuewen.com/ED1E6A/20118172701012106/epubprivate/OEBPS/Images/40923_43_3.jpg?sign=1739288238-sK9gyxQQiByPnG4PGHnNfJAvRMlJDH5J-0-84b48ead3fde168b4f1513a405027da6)
![](https://epubservercos.yuewen.com/ED1E6A/20118172701012106/epubprivate/OEBPS/Images/40923_44_1.jpg?sign=1739288238-AzdgcFn1U0PduLSOoniEQIdjBlIGZEIa-0-e16cf321079759a4380b33ff725c845d)
Python的列表的内建函数如表3-4所示。
表3-4 Python的列表的内建函数
![](https://epubservercos.yuewen.com/ED1E6A/20118172701012106/epubprivate/OEBPS/Images/40923_44_2.jpg?sign=1739288238-rBb61biiUPmNULu6OY1FA4OsbUKxWU6x-0-48f75b8a7900e77366abda776eff1317)