![Python+Office:轻松实现Python办公自动化](https://wfqqreader-1252317822.image.myqcloud.com/cover/834/40107834/b_40107834.jpg)
2.1 Python数据类型
2.1.1 数值(Number)
Python中的数值类型用于存储数值,主要有整数类型(int)和浮点型(float)两种。需要注意的是,数值类型变量的值是不允许被改变的,如果改变数值类型变量的值,则会重新分配内存空间。例如,数据分析师小王统计汇总今天商品总的订单量是899件,输入代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_1.jpg?sign=1738856812-pk9btmePQ4fF1B6E1BXXcBtTOX654pSh-0-ae19331428eb6810ea044ff4ca097516)
但是,领导需要的不是总的订单量,而是商品的有效订单量。由于还有部分客户购买商品后又进行了退单(共计8件退单),因此需要减去8件退单,输入有效订单量的代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_2.jpg?sign=1738856812-OPGfYJe7RjZMxHPOeqWbbG8h7Spf758e-0-391398d850fdfe65117800e91df1e165)
运行上述代码后,现在变量order_volume的数值就是有效商品的订单量891件,而不再是前面输入的899件,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_3.jpg?sign=1738856812-DWf4bvqkgJbxuBvL73Urk5k6QSWTSuim-0-a8f8226f7109193241b3ca673bf560fc)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_4.jpg?sign=1738856812-GHJ6fbh1IwNjlBVYtnhZXqFwmnd7PNaP-0-d7c46e4e5281cf5001d0ae656df074dc)
Python中有丰富的函数,包括数学函数、随机数函数、三角函数等,表2-1列举了一些常用的数学函数。
表2-1 常用的数学函数
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_5.jpg?sign=1738856812-TpPZdtV6MQXE7gvMGq2SO65uPLLGB4CI-0-1809902cf48f03471b7332c65a8438e6)
下面通过案例介绍数学函数的用法,例如,我们要返回数值-12.439的整数部分和小数部分。Python数学运算的常用函数基本都在math模块中,因此首先需要导入math模块,然后使用modf()函数提取整数部分和小数部分。
通过下面代码可以看出:-12.439的小数部分是-0.43900000000000006,整数部分是-12.0。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_6.jpg?sign=1738856812-CFFyPIZEgNnWo36MkIfhoZo8nMtGhdVj-0-040ecee18ce42bbe5e78cbb11b41dc10)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_7.jpg?sign=1738856812-jZxt6pGzvNDxsJ7PIWMc5vjrKbxP7kAT-0-4e5d029b6c7c61055367aaa1b62c7bd8)
注意:这里小数部分不是-0.439。这是由于Python默认的是数值计算,而不是符号计算,其中数值计算是近似计算,而符号计算则是绝对精确的计算,这里就不再详细介绍两者之间的差异,如果读者想深入了解,那么可以查阅相关的资料。
2.1.2 字符串(String)
字符串是Python最常用的数据类型。我们可以使用英文输入法下的单引号('')或双引号("")来创建字符串,字符串可以是英文、中文或中文英文的混合。例如,创建两个字符串str1和str2,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_8.jpg?sign=1738856812-TCOiPUUUgScvdjKcFyqvbC1IfNuiOS1R-0-fe824bfc5e6ec79510476b550e965153)
查看字符串str1,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_9.jpg?sign=1738856812-CzbVj8Ojw01num0hulN0coQaYVO3aqEv-0-ef0857a97a542cbe02bbd9aae40b4784)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_10.jpg?sign=1738856812-gbTRTLIAJ9z5KoBSZTaS5NgVRo3F69nx-0-7a292c6900d17d5240945edb530ccfa5)
查看字符串str2,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_11.jpg?sign=1738856812-KNTXkHNs01mW4YixqTU9ljGivGg4fDqQ-0-4ca6b190f1b96eb72502a17fd204dbc4)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_12.jpg?sign=1738856812-LpJAZJjJUcCkicXMvDqhMBfHiZ35Wvno-0-45ffa4ea7267b94c2b4911e16caa76a0)
在Python中,可以通过“+”实现字符串之间的拼接,输入以下代码:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_13.jpg?sign=1738856812-xMFZWyBYvQcLg1yEog4FvAEKV1dbpfhY-0-1a38207dc15bf589b81d6080a7a69f73)
查看字符串str3,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_14.jpg?sign=1738856812-d0uEPdomBWysil0zH2yZuinpRp2EiqZW-0-3190fa660586295222645e9c67f83e83)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_15.jpg?sign=1738856812-8LMRTuED7HO1ionVEQIjz3Qj3jJR1Pmo-0-a2ab54fe0e4e6004aa91b2df76a606ba)
在字符串中,我们可以通过索引获取字符串中的字符,遵循“左闭右开”的原则。需要注意的是,索引是从0开始的。例如,截取字符串str1的前5个字符,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_16.jpg?sign=1738856812-ecfZyNOmmuNyDsxrhxO0qvC8grf0pMr9-0-ac8bfec8572634cb1277ed0391cfbb17)
或者
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_17.jpg?sign=1738856812-5dzlHTqEvg2gBR1ZIK4KTFU3juebuIPJ-0-7109f4850eeed8aebff7eed546046929)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_18.jpg?sign=1738856812-FIS9zHYG2lhEkimCik9Fac5ixeSyj8D5-0-9098cb245e6513873c111800e6bf32f9)
我们可以看出,程序输出字符串str1中的前5个字符“Hello”,索引分别对应0、1、2、3、4。原字符串中每个字符所对应的索引号如表2-2所示。
表2-2 字符串索引号
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_19.jpg?sign=1738856812-FF17U0vPvqS7FcB4aB3y5ai6akEVMsO7-0-ed3e0492d288f002b6a701f7048e574b)
此外,还可以使用反向索引,实现上述同样的需求,但是索引位置会有变化,分别对应-13、-12、-11、-10、-9,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_20.jpg?sign=1738856812-QyE8Uv3w5qK8SAJ8TZJg2skNdVWiiGfx-0-d9136d18d1267f5b887cf5bf73cf27f4)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_21.jpg?sign=1738856812-5TYguwBMYfGxX3HFc9YmtdjPHTbb1l9U-0-436a54d5b64b59bb6b8f189cddc6b53b)
同理,我们也可以截取原字符串中的“Python”子字符串,索引的位置是6~12(包含6但不包含12),代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_22.jpg?sign=1738856812-xXPMThbeJ1cjlJNGXYbKyNvVbHgMqJkl-0-58f895527bb8e0beed298cad968ca2a5)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_23.jpg?sign=1738856812-XcKEPWLfzMarpKBdGWRVe6LeUgbnsaga-0-706fc491636b75c9c7083c59f1e8c642)
Python提供了方便灵活的字符串运算,表2-3列出了可以用于字符串运算的运算符。
表2-3 字符串运算符
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_24.jpg?sign=1738856812-zBc8oVbTFzoptRtJNx9DgRgxwFyzExWu-0-db2470374dc8d6d06d5d0858d27c3496)
续表
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_25.jpg?sign=1738856812-M9OrvIwwYpBL7lsI3jAT4gjiCf0mybVN-0-0b47f7e3f6b49bdf74fd872319db5c9b)
下面以成员运算符为例介绍字符串运算符。例如,我们需要判断“Python”是否在字符串变量str1中,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_26.jpg?sign=1738856812-2ZILA4mbuqVEZ4atDdmmwRZd3HnAIYmF-0-a72f4d41b8ecfac2b6e844892cda25ab)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_27.jpg?sign=1738856812-SNTCGMXVmE6t0KYOc9b13qq6unMOyaYp-0-ffa50426f499eb548a9b74f4240ca121)
输出结果为True,即“Python”在字符串变量str1中,如果不存在则输出结果为False。
2.1.3 列表(List)
列表是最常用的Python数据类型,使用方括号表示,数据项之间使用逗号分隔。注意列表中的数据项不需要具有相同的类型。例如,创建3个企业商品有效订单的列表,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_28.jpg?sign=1738856812-wE7HTjqfcfjtbeCU7jaSK1AUIusimnxn-0-1dd3b6871bdc2517887a1de0476679ba)
运行上述代码创建3个列表,查看列表list1,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_29.jpg?sign=1738856812-Fqj4VjU9mhLaV1hxbbRB4PdNREkrK5m7-0-14bb42bf4160431e2cc788200f6cbd4e)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_30.jpg?sign=1738856812-9EH0keRw28VexOdcmvGnHbeK79zGa8Sr-0-35d42bef393ec73a5a6d691fd6f38d9f)
查看列表list2,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_31.jpg?sign=1738856812-ClT2bNq6LXVbQv5pQ3P19iRCJzWjHzsL-0-8b6e5ca86dba026f375d720e52bb0b45)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_32.jpg?sign=1738856812-D6uw6Xy6OTKcfrhuklZoN3TiM8JQN5wY-0-8eead5e97f15d5473f8c4d402ab5932d)
查看列表list3,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_33.jpg?sign=1738856812-TMeVnEmeluGgD6D7Mar2vKcLLu63r5XW-0-eeb248462b5b03ab52c73576fc1c1042)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_34.jpg?sign=1738856812-m1nDdqHAq4eR9gcq5GCaW9SdXQ4VC4ip-0-c261167f2056394ae62450e13e14d0a1)
列表的索引与字符串的索引一样,也是从0开始的,也可以进行截取、组合等操作。例如,我们从列表list3中截取索引从1到3,但不包含索引为3的字符串,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_35.jpg?sign=1738856812-EgypYbAfj34HynCPPeUzS8kw3NtaUisg-0-e38b74a5b7049f512f04736a16034dd7)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_36.jpg?sign=1738856812-5EESaWxDiaaBobrY49iGk75sT1SneLpQ-0-c04642dc05f9aec43d56503b1f85cac0)
可以对列表的数据项进行修改或更新,首先查看索引为1位置的数值,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_37.jpg?sign=1738856812-KSWw1ZUQbL8I2nOoWDtIxb2qbggTYhwG-0-a24a9c8777a720d077e9edc5fb6e9931)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_38.jpg?sign=1738856812-nRqonpY6aKK4iT5rr5etWn8jWtMM7bwl-0-de1818c39ab2e4192d7abddd714f89bb)
然后修改列表list1中索引为1位置的数值,如将其修改为“2019年”,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_39.jpg?sign=1738856812-1nyYdkVS3HXK4v4eM8qixFtM3pYOMzuE-0-54305f5fc8639904f14133ab7cc8209e)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_40.jpg?sign=1738856812-yYXn4laDmzy8Ck0dRbfh4fDA63bIfC3i-0-4f7dd2058de49419733c24895db470c2)
可以使用del语句来删除列表中的元素,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_41.jpg?sign=1738856812-8ISrOsSJjETa3DihfCgeQgndBSKGnNqq-0-b755cb574c9955b2c3c9eb00d2ccbe5d)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_42.jpg?sign=1738856812-OKF7JZtUsnIzRoVtFxnlO1knyjDFFF2L-0-bedcff7b1005914efcb3e5110e069735)
也可以使用append()方法在尾部添加列表项,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_43.jpg?sign=1738856812-7mGgGQzi70vVnUxrxqQJSuRDkKhQWHp1-0-49d1fd8f2a4e5fabe32b126de65acaac)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_44.jpg?sign=1738856812-6UbLP4909L2z4PJ7nHmXSqs995KyzUpJ-0-820b56d4174dece482d7be3b8c3664e4)
此外,还可以使用insert()方法在中间添加列表项,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_45.jpg?sign=1738856812-GknW2Lt0N83M5A0ZTrlm9hUH3vo4BJD1-0-ea92f362d0ae080809541b907e6fd9e1)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_46.jpg?sign=1738856812-MOkNzW604Tb7Gb0KfNYz9uugUrcR2J7O-0-8c4ea7c5321bcc2f50e1af712ee39d63)
2.1.4 元组(Tuple)
Python 的元组与列表类似,不同之处在于元组的元素不能被修改。需要注意的是,元组使用的是括号,而列表使用的是方括号。创建元组很简单,只需要在括号中添加元素,并使用逗号隔开即可。例如,创建3个企业商品有效订单的元组,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_47.jpg?sign=1738856812-swtqiZ1Q36qEyxZyhAprWgDJByDRjvXE-0-86f590fbd145e99b7f4c0cf7c38880ed)
运行上述代码创建3个元组,查看元组tup1,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_48.jpg?sign=1738856812-7qvQv4RvlseIKSu6MIJOeI0FoRhRTAUd-0-071fbe4f1bfcce1ace08c05f3bcf4e7b)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_49.jpg?sign=1738856812-p4A4XHM2iX0ugxPPu5YW4yZZj0NxTUWW-0-76cc2361b9ea9913da308c6e2277edce)
查看元组tup2,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_50.jpg?sign=1738856812-VEKvA5vSarl432TsH9nmijNsSUfqQBXc-0-de0cf830b7563d0f9364034a00ee7577)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_51.jpg?sign=1738856812-y9r4Nd33eP6Xks5xUyABJJtk4fcw69j8-0-b7fd6c88b3a37d6b091f269074003a68)
查看元组tup3,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_52.jpg?sign=1738856812-XhW5a54h8AzQYwih2fRispu3f3Z8DuJm-0-c66d9db9c0e4ebbf87a3263bed5d3eb7)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_53.jpg?sign=1738856812-PDHJTciBZmXxDPB3uTLUjqHolWagaEs9-0-d7eff8bb9cebb23c870014562a2addc3)
当元组中只包含一个元素时,需要在元素后面添加逗号,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_54.jpg?sign=1738856812-Y4s6ayGo9EZTDaa4qRoLB8hhQbjvd88E-0-4517c2568bd22ac4ac342edf5d48e7d7)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_55.jpg?sign=1738856812-lOHNDqTlu0XX9igi4xhP0nYS4pPUPFGs-0-04eabe6f941a87e0a5276eec631b879c)
否则括号会被当作运算符使用,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_56.jpg?sign=1738856812-2AVRdBXPTt6b78IlLbpNa37uc7GDM3c0-0-2f06390a5e8c8b932842ebec6ac90854)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_57.jpg?sign=1738856812-pn5MAoL1l7WcuIgZcJkLKjMuMlPd4Mry-0-f58416846726ea9f6392956d3f5db158)
元组的索引与字符串的索引一样,也是从0开始的,也可以进行截取、组合等操作。例如,我们从元组tup3中截取索引从1到3,但不包含索引为3的元素,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_58.jpg?sign=1738856812-TNzDdIjvvTg0xSZKFLsPIsqiMOreGfy4-0-466198b27a859cabecae57c9017d6d83)
代码输出结果如下。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_59.jpg?sign=1738856812-VLBzO9LwxfybEds97fUJKqwjIxQika2P-0-8040aaa1dc72881771c6267125855ea5)
在Python中,也可以通过“+”实现对元组的连接,运算后会生成一个新的元组,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_60.jpg?sign=1738856812-Jux5FvNpe0fpr61NEMsVScDdh6GkkIcF-0-688bbfe2f7703f2071e91a73070cb3e7)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_61.jpg?sign=1738856812-6LDZCxdNpEeAlSXtE1asfSqQ57tuj9ct-0-80007602e30df23b1159d9d48c568377)
元组中的元素是不允许被修改和删除的。例如,修改元组tup6中第4个元素的数值,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_62.jpg?sign=1738856812-8gpN71SaVtkj3BDpcqZ0bB00hewu2Kl1-0-d879468909b2ce9919ad93f1e7fed32e)
运行上述代码,错误信息如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_63.jpg?sign=1738856812-nRMUQk7hTjBVzMpnskzwGFtNGAjtzoiW-0-406de1ec6d30742f95edba623fb4a574)
2.1.5 集合(Set)
集合是一个无序的不重复元素序列,可以使用花括号“{}”或set( )函数创建。需要注意的是,创建一个空集合,必须使用set( )函数,因为花括号“{ }”是用来创建一个空字典的。创建集合的语法格式如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_64.jpg?sign=1738856812-mxsU9Fidw0XnWGGxY9enWLQHsQ0jPVx7-0-201aa46b7628029e071dc4fda919c99f)
或者
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_65.jpg?sign=1738856812-RQ8VVX5BHZQFXqKysWyt0di3nWhy7Otw-0-35c9799d752c672e62882429f560536c)
下面以客户购买商品为例介绍集合的去重功能。假设某客户在10月购买了6次商品,分别是纸张、椅子、器具、配件、收纳具、配件,这里有重复的商品,我们可以借助集合删除重复值,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_66.jpg?sign=1738856812-em80EIBRYdkEsNEssM4hdOlrJP2eN56I-0-d292317b7c9d313066764a6d138e21b4)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_67.jpg?sign=1738856812-yY37SeOUojn52yY7qh4Wk8x0yx4FjzFe-0-b552ca2be44833d3c08873e5c9ef6dfa)
运行上述代码,可以看出已经删除了重复值,只保留了5种不同类型的商品名称。
同理,该客户在11月购买了4次商品,分别是装订机、椅子、器具、配件,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_68.jpg?sign=1738856812-JdCp0TwRjW7KbNoVf4x66WaxcNunHFHx-0-640f2e448848cdef4abea285ff023065)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_69.jpg?sign=1738856812-86lZY35F1ApP1ZOvzQwzwlTQP4u6UYV5-0-c56e1a84ee5e196eee0f7370b7332d2a)
可以快速判断某个元素是否在某个集合中。例如,判断该客户在10月是否购买了“配件”,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_70.jpg?sign=1738856812-EhFx4VsvsDhEsxKZpZmA4aj85tIuyyOW-0-b5bec5af59fce4b024c46ffd810d8bb3)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_71.jpg?sign=1738856812-EtEHclKvZf7ymMrLN1WZGl2vG4FPLIzV-0-9664f818d0ac86f65b7431ea9748bb5a)
此外,Python中的集合与数学上的集合概念基本类似,也有交集、并集、差集和补集,集合之间关系的思维图如图2-1所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_72.jpg?sign=1738856812-S0awxl6e0Cx9WUu1mdiLAdjeypFiZE2M-0-cdaed0ca8e64fd0a6ba20116adf2a50e)
图2-1 集合之间关系的思维图
集合的交集。例如,统计该客户在10月和11月所购买的重复商品,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_73.jpg?sign=1738856812-FupNpgwkAZFkxuGCtVanMYozKAoowzqY-0-30b001473f993ce8a4efd4c2caf98a59)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_74.jpg?sign=1738856812-OYXhx3g27wwXSg5awMNatVsaPGBfC2eR-0-c11223ced4ed36a2d7d14351a0d0f72b)
集合的并集。例如,统计该客户在10月和11月购买的所有商品,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_75.jpg?sign=1738856812-IyEIYe4RMJG5rCTAt9iT25XH4MkGh7NU-0-84a37407cd8411fea5e8cf38177c59a8)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_76.jpg?sign=1738856812-sBlQbdPdLYmhjZi7E5eZYT6ZUnTF8Evb-0-62693c1ef1ee3d5c1a5cd243515c4abf)
集合的差集。例如,统计该客户在10月和11月所购买的不重复商品,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_77.jpg?sign=1738856812-KQ7eTfYl1b2FdqXen5JERp4FKGIE1o8x-0-fc9692e3dd7b67e77b261a83d192cc0b)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_78.jpg?sign=1738856812-l8FsRFzdt2ZOtCoBW8dO0NdrutspmYHE-0-263695f8619dd7485f78b9653557eedc)
集合的补集。例如,统计该客户在10月购买,而在11月没有购买的商品,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_79.jpg?sign=1738856812-lw8hDTW4DV8KEm7Y3POIu0GxFGv0QY0b-0-b232626e7afd04ac06941cbdc5f39664)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_80.jpg?sign=1738856812-9vmtqX8VF0v7y6rasH6CfiKrRfzrgHNN-0-dcab932e70737bc57cfb4cc0c885e29f)
2.1.6 字典(Dictionary)
字典是另一种可变容器模型,并且可以存储任意类型对象。字典的每个“键”和“值”用冒号分隔,每个“键-值”对之间用逗号分隔,整个字典包括在花括号中,语法格式如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_81.jpg?sign=1738856812-BJdmUqY3u96JRbiENJV9PAuV0MtDdzqL-0-3c0c1418e3d7533ce1c412639b6e70cf)
需要注意的是,“键-值”对中的键必须是唯一的,但是值可以不是唯一的,且数值可以取任何数据类型,但键必须是不可变的,如字符串或数字,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_82.jpg?sign=1738856812-4ie6XjwuMby6x3eggwLQCR5s8OPNs8jq-0-0f16d305b4ec4aa66e00756684ff1721)
运行上述代码,创建3个字典,查看字典dict1,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_83.jpg?sign=1738856812-eOleYljg2FXiWqHFCy7hJ6haIlb5NRwA-0-ca8eb49f6059fa5b5f73f3b621852371)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_84.jpg?sign=1738856812-owY2d7BIQ3qWvLieVGpybgmlyO63QCbY-0-05c5103284d6ccf4ca612f938212ff0b)
查看字典dict2,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_85.jpg?sign=1738856812-qmIdrRWlQPxOMaLKJh9JcL5INraqXWKi-0-3736da51a6dfd7f48cb53d5109dfc99e)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_86.jpg?sign=1738856812-9jUjReKV3JOZDgJwTTxY0yVSRmW3jOEJ-0-064184cc1679a2c9fba69368bcd44ece)
查看字典dict3,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_87.jpg?sign=1738856812-V14nSuegbC4BBXwjEIwWL0C9XstUeBO1-0-6cd4d8a6b12ad01c82fe60f30083b7a1)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_88.jpg?sign=1738856812-cLEpiOZMSX5R6WO4P8AaooW3EvANcrvd-0-1bec14d5d907d9b7715b1ab20f7182a3)
在Python中访问字典里的值时,要把相应的键放入方括号中。例如,读取字典dict3中键为“order_north”的值,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_89.jpg?sign=1738856812-SKIkbldefNNBkLHaJO0Dm4fMm3wC6VvN-0-295373082faf33ef6bf41494bd3aa501)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_90.jpg?sign=1738856812-Xx4SVEG3Mr9Kk8VYFZf9BqTlUaYjStG5-0-99d69a8365d3ce0a08030b1d8d639540)
在Python中,如果字典里没有该键就会报错,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_91.jpg?sign=1738856812-7EeE4srb2evJpZ4SJR6pySTkQA4Jc8IH-0-657f72e411cbaaafde70aed8b3b8c690)
输出错误信息如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_92.jpg?sign=1738856812-rhD4wzXdTtYkN2rtEykniifzTJY3M2zA-0-c4803ad47b659ce5390927aa0ec4fb1d)
在Python中,向字典添加新内容的方法是增加新的“键-值”对,修改已有“键-值”对,例如,向字典dict2中添加键“order_sales”,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_93.jpg?sign=1738856812-rKaeAM8mA3jCimDvT9iaiPtWxcBEa4g1-0-40ba2a44e839a88b9b742addd9b63078)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_94.jpg?sign=1738856812-lHJeCxkj6aXHXjbbupCtlwJ7pe81UMIs-0-f073f0d48e5b702ad4f8d195b56af1bb)
在Python中,既能够删除字典中的单一元素,也能够清空和删除字典。例如,首先删除字典dict2中的键“2020”,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_95.jpg?sign=1738856812-u9erjNMcY1ORYK34ZzGjhrxLx8MzSbOM-0-d7620580c97918cbb3aa8500617af96d)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_96.jpg?sign=1738856812-hx124StmTaEJvFhyGZlQ2zDVaqI50IpD-0-6aa63756b5b1951afdfb970c76e8d9ac)
然后清空字典dict2,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_97.jpg?sign=1738856812-DGbxx2T2nRQkzsdvUKB9O630FMprHXs3-0-3858148d3962d7c96d0e8e91945391d1)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_98.jpg?sign=1738856812-AHr3lNFY83OQzjBZ4lpN0TL8mfxxnyRa-0-17f94f80f8dd2cd28be3c068716e97e2)
最后删除字典dict2,并查看字典dict2,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_99.jpg?sign=1738856812-lNhUzkibErs1ovNbXjibDR6IAMKxmrnd-0-9abba855ae6441d411c42a4ee14a39f0)
代码输出结果如下所示,会报错提示字典没有被定义。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_100.jpg?sign=1738856812-NM57NuqwXrAGxNBD8MwmTidKx93tff3i-0-05170cdc37005e8328c6683933547a10)