![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=1738849726-6rZNdxmjC0HzJLevWO3wLwzDURWn5W6K-0-6879220f1c24cf26e1388376a0dd2539)
但是,领导需要的不是总的订单量,而是商品的有效订单量。由于还有部分客户购买商品后又进行了退单(共计8件退单),因此需要减去8件退单,输入有效订单量的代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_2.jpg?sign=1738849726-A4Z5AGiwsT83eGxZClqFsneWJ3SLENAN-0-b55329b823a27d5d950226f606455355)
运行上述代码后,现在变量order_volume的数值就是有效商品的订单量891件,而不再是前面输入的899件,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_3.jpg?sign=1738849726-z2OYxxuXDZz7E3TZYKFI9yhbUZbw7F5P-0-cc549e95433d92de17f14e6dbac43cf4)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_4.jpg?sign=1738849726-gSlM3zLmwql4NzMVwIyzGq2X9loWynoK-0-43f171d0c50bcf82ea72f3b93b60ae06)
Python中有丰富的函数,包括数学函数、随机数函数、三角函数等,表2-1列举了一些常用的数学函数。
表2-1 常用的数学函数
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_5.jpg?sign=1738849726-GPeDSfYAG9KbWvB2dfMMU4G7npzDwiRR-0-8077597bd6f504d541417a20b8e56b40)
下面通过案例介绍数学函数的用法,例如,我们要返回数值-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=1738849726-YiBO3hYzb4eiGXviiMvrQlS0skSUfAB9-0-cb93bd9953eb308368977cdc43170aaf)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_7.jpg?sign=1738849726-Fia7WHcgbrE5GsRnvZ5oDiumGvhcW9zc-0-39f8d25d05630868a6786e5fd0873c29)
注意:这里小数部分不是-0.439。这是由于Python默认的是数值计算,而不是符号计算,其中数值计算是近似计算,而符号计算则是绝对精确的计算,这里就不再详细介绍两者之间的差异,如果读者想深入了解,那么可以查阅相关的资料。
2.1.2 字符串(String)
字符串是Python最常用的数据类型。我们可以使用英文输入法下的单引号('')或双引号("")来创建字符串,字符串可以是英文、中文或中文英文的混合。例如,创建两个字符串str1和str2,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_8.jpg?sign=1738849726-dTKnRzVw8Dv2vR9ahZ6VOrNE2OsJIO7h-0-0a2fbf8b1ce68c9bcea3f2cd68ecda2d)
查看字符串str1,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_9.jpg?sign=1738849726-CpQP9pm1fqsGHW4DZ6ZYpAZG9udKjjrS-0-405d782ddced36afd01b002265aba797)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_10.jpg?sign=1738849726-zf8PYx5bM9Wo6n9ENDiqBccA2HWsJKu1-0-4018cb3066a5fe076f48f36546363e28)
查看字符串str2,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_11.jpg?sign=1738849726-KscfWWsLZYNonJOb2TjiPnCzzpcMEe8R-0-c9e684ab3fcbf47ce7f1847cba9b8b05)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_12.jpg?sign=1738849726-Ed7FIOgxfdw5e1Nw5dzuKenT05A2h16k-0-fa8adfd12baf361dd4eccb8c15df6199)
在Python中,可以通过“+”实现字符串之间的拼接,输入以下代码:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_13.jpg?sign=1738849726-J5huxkchs6r0uwbElYfoSc8hUIZdtPZR-0-895425ae749a9ca2a00c431880b7c183)
查看字符串str3,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_14.jpg?sign=1738849726-yUk93gqYGOfk8FwxlgVNqFnl3qTygDcX-0-f79160ee8c43a0c9a4740e231f9a821c)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_15.jpg?sign=1738849726-MpJfAK5mZwiUeV6AXcIdZRg5OnfZOWHR-0-ca2ea274b3f6f804b55d67b037fd60df)
在字符串中,我们可以通过索引获取字符串中的字符,遵循“左闭右开”的原则。需要注意的是,索引是从0开始的。例如,截取字符串str1的前5个字符,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_16.jpg?sign=1738849726-1hy1KpSmWPjTUxLBmuqP02HeGIHfcJ03-0-461ec1bf81c59ef3cc74261a8b3530c5)
或者
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_17.jpg?sign=1738849726-CmX0LoqyjaHRXyrFyeXMI3zSXX4AkGWw-0-b1cfbb806dc47323461fd838350d75c3)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_18.jpg?sign=1738849726-YKxYztDHCUUBXnBg6pkx9VYRVdhUQZKZ-0-67685902a7ef47c3c9ea324366c6ecbd)
我们可以看出,程序输出字符串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=1738849726-y8XZAFK3NmL82yV1UuVfi4RVHBL3GxTr-0-032f83795252974ed63bc043cc1a9dde)
此外,还可以使用反向索引,实现上述同样的需求,但是索引位置会有变化,分别对应-13、-12、-11、-10、-9,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_20.jpg?sign=1738849726-LukzDaczeYUNw3iqYgZAkEs7ZIf4Gwnq-0-d810ba2a68306b1a9131d3e70e7c92df)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_21.jpg?sign=1738849726-aIgmM4gQByqmObFiA2IHmI0cgFrlsMMa-0-fe9a51972af93d6b20425dd5ad681c7f)
同理,我们也可以截取原字符串中的“Python”子字符串,索引的位置是6~12(包含6但不包含12),代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_22.jpg?sign=1738849726-ydvkXkhVVK31pxpj0fpKT0xXjS3h6ld1-0-25ca3efef9a9cd20045e957558cc481a)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_23.jpg?sign=1738849726-l3CWqKtKobkcSFQeBnHAR9GkJlcMhX6a-0-f0e2a8fc67248ab531883c45fc12ab4e)
Python提供了方便灵活的字符串运算,表2-3列出了可以用于字符串运算的运算符。
表2-3 字符串运算符
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_24.jpg?sign=1738849726-TReyYQFfExrToBKAj6OB3LdEDxE7Zbvp-0-5ef9b58e7eeca4cae5e0f0bd28208167)
续表
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_25.jpg?sign=1738849726-o5H5x86rwlfyDxHrYXYs1cLcE9OJba5t-0-72d1aa5f49c64ee8dc9b989340bede60)
下面以成员运算符为例介绍字符串运算符。例如,我们需要判断“Python”是否在字符串变量str1中,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_26.jpg?sign=1738849726-EoS2JG43v9EG4hXbaW9kwb0v5HiDhhY7-0-c620bd73e8571fd19e1d034a358744a2)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_27.jpg?sign=1738849726-A6wLVlBxosLb6I8Hpk9GsTFSFD7kF6pe-0-c0ecdec3cb137ac0d89fcdf4590994f1)
输出结果为True,即“Python”在字符串变量str1中,如果不存在则输出结果为False。
2.1.3 列表(List)
列表是最常用的Python数据类型,使用方括号表示,数据项之间使用逗号分隔。注意列表中的数据项不需要具有相同的类型。例如,创建3个企业商品有效订单的列表,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_28.jpg?sign=1738849726-CQk3DFXFRApFp2QTkwSYVIxpFtZ22gXC-0-60bdadc75432e0072211c135d208523f)
运行上述代码创建3个列表,查看列表list1,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_29.jpg?sign=1738849726-Dz0tWUzSWVHoCn5SrxjqhephffqjOApy-0-3ed6eee281625c01824414650f921b67)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_30.jpg?sign=1738849726-cFvJ5sjaUSYg7MOG1n28dpFRkIPGAqhq-0-9d99750fe941f9cb9960bf5bca0e45e1)
查看列表list2,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_31.jpg?sign=1738849726-jAXJAzIjXJSvIuAEjdNJwY2jnENyoVSY-0-1dbaf957844538201b91b4c7a1ddad9d)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_32.jpg?sign=1738849726-OEUY1XqrjxSW33OaSxEwI5XWTgL3AOBp-0-c8c881cf90cfc6b57657947cddc55f50)
查看列表list3,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_33.jpg?sign=1738849726-53Zirvjim9gKvN95Yr6uqhEGmeP85kPb-0-d8a85fda7239ab37d69b5899b91d7e9d)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_34.jpg?sign=1738849726-OrS746KFvvHdi5fFcpfSSzxg9eCdm4Wv-0-6b5a9092f4717d0f5a17275f5f452eb7)
列表的索引与字符串的索引一样,也是从0开始的,也可以进行截取、组合等操作。例如,我们从列表list3中截取索引从1到3,但不包含索引为3的字符串,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_35.jpg?sign=1738849726-Rb6wTDGMCAuWbeb8GGMP8DrJDgsTXHNJ-0-3dfa92442bfee8a7f78ed836b1db1ba7)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_36.jpg?sign=1738849726-xyqSuRomJnjCDyzaGQIQl0nb4swGoD9d-0-f7e77bb4d1536f8ec66d1cfae04b5922)
可以对列表的数据项进行修改或更新,首先查看索引为1位置的数值,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_37.jpg?sign=1738849726-Kd4Ecu68jvD9DMEYmeJERYd3BFypa5xl-0-d09c9a2ebfb3b19e870aa668f8ce47cb)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_38.jpg?sign=1738849726-ZjasWZfqaq4RDUTpmngRET2F3MpZWlDc-0-c592f7c4d5340cda7acb70a71da2c4bb)
然后修改列表list1中索引为1位置的数值,如将其修改为“2019年”,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_39.jpg?sign=1738849726-SWckd1xMCZZXLbCcgytNZpS4gIV4wr9m-0-46d3db770d64b9efab910fc6a346d3da)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_40.jpg?sign=1738849726-O0foPkatclvpafKaV8xRXCt4nY8G40gt-0-af34c9118ef0877c8b7793809e3fb98b)
可以使用del语句来删除列表中的元素,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_41.jpg?sign=1738849726-CCJMgfeaCAKDJJSznMY9cd3aUez3ZWdv-0-f4ad907cc0f2a7bb293c6f1affcd3228)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_42.jpg?sign=1738849726-cveLjJNga9uBH5YvFynqSh0JH8w0X4FH-0-6dabff6183cdd7465ecec4e1343dd5c4)
也可以使用append()方法在尾部添加列表项,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_43.jpg?sign=1738849726-MTpwaS4kPUwsHP8I0dZ5GhcpOb6JrgZC-0-c14b33ab59423bfb52e0179890a926d8)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_44.jpg?sign=1738849726-SSX9iBBSoOELIOOFAVbG7n5FLeSVYewc-0-0787f7d1c402252e8cdaac0ca5e32d1a)
此外,还可以使用insert()方法在中间添加列表项,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_45.jpg?sign=1738849726-WAsFqLv3N8K90z1bRENYPxDhGpxIpE6B-0-08a8315e4a93bf68a9b48ab2c068a503)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_46.jpg?sign=1738849726-ZT3cjmrc0MqrTOh01ZgqesA6IvQuQyl2-0-18edecf912f63be72fc958d5d7c9ad98)
2.1.4 元组(Tuple)
Python 的元组与列表类似,不同之处在于元组的元素不能被修改。需要注意的是,元组使用的是括号,而列表使用的是方括号。创建元组很简单,只需要在括号中添加元素,并使用逗号隔开即可。例如,创建3个企业商品有效订单的元组,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_47.jpg?sign=1738849726-vyloU2cKwXqL3bnrTObPO6VCyoBk0X6A-0-3a6bec131ef35193b5117616c3cc23fd)
运行上述代码创建3个元组,查看元组tup1,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_48.jpg?sign=1738849726-2A8jBfC8HTX03ZFVj3ODUUx4XfnmP3yI-0-36fff189e6f1e83516bd5d7390382f25)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_49.jpg?sign=1738849726-UIvcsWFKUuR0Q72LxTgugAHzsm3atLgE-0-95a5111f86540c44384b2c14f0160ccd)
查看元组tup2,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_50.jpg?sign=1738849726-xdW8XyehaaBVCuFjqlUO4V0fHHvs9vXW-0-bc9f5714a3da0dc8062383985d1658dd)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_51.jpg?sign=1738849726-KuIMAKPJoL5483hyMfhfCLEqtDqvBYtR-0-5f90c8c2589a27fcf2252a44f575f8ad)
查看元组tup3,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_52.jpg?sign=1738849726-5yeDrU5NwpRp6KiBerUcQ1N0dB1c0ftr-0-4f39299f885089de185ce739331b5aa0)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_53.jpg?sign=1738849726-rAcAhBHH0GrRuNGssrIPCtfTZakleGZW-0-4a4a7d77a166f573eb011e6c16c9f9c1)
当元组中只包含一个元素时,需要在元素后面添加逗号,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_54.jpg?sign=1738849726-0U54QOCSEe9OrfmSmpg896NGjyqmiIPL-0-1c045c9329d2da2b0de315a381c4c3e1)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_55.jpg?sign=1738849726-Gnz5qRcYf0iVwPaAe979rB9Qhnq5A3yp-0-e4870036ba934c1756981edee8e6d58e)
否则括号会被当作运算符使用,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_56.jpg?sign=1738849726-NzLtBLP02IyWD3x6h3Hziyg9azvLIrYs-0-6740dae2994d743035c49d8eed8ff5a6)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_57.jpg?sign=1738849726-BDQFFdnxa4XymH9m29Jx09fLbCVftFR5-0-8fdea08c9df0733c07156164c351ca42)
元组的索引与字符串的索引一样,也是从0开始的,也可以进行截取、组合等操作。例如,我们从元组tup3中截取索引从1到3,但不包含索引为3的元素,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_58.jpg?sign=1738849726-aAFWt6LC1muOlSwWAuzxvd9tpQRKCsmt-0-76e5b0f8a6cf9ce069d18db7b3ed33b8)
代码输出结果如下。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_59.jpg?sign=1738849726-3iWjipaglXNS5qC703NZqxLZht1NoTwv-0-d752d8d2cbc4ca5dcd8527c5981b60a9)
在Python中,也可以通过“+”实现对元组的连接,运算后会生成一个新的元组,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_60.jpg?sign=1738849726-nXEPjezcXirJPJ1EvvBQtIg9muDQbW6w-0-942928685c1970191d6b46b7d9a2f420)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_61.jpg?sign=1738849726-CJWJOVZ9mioZtPbi0Rd2oZe4pXa5rs13-0-2099ae1954eeb880a064024c07218f3c)
元组中的元素是不允许被修改和删除的。例如,修改元组tup6中第4个元素的数值,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_62.jpg?sign=1738849726-4gYOfDpDJMAM1TT3Mrh9TSNDSWMRvK02-0-3e3b4ee5f6ebeab68b55d97289fe1a57)
运行上述代码,错误信息如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_63.jpg?sign=1738849726-za1T2UI2c6sGrNcddC1auL5Vf1r7P3xn-0-1b4766912d27ce30040ce7d3b8e9c737)
2.1.5 集合(Set)
集合是一个无序的不重复元素序列,可以使用花括号“{}”或set( )函数创建。需要注意的是,创建一个空集合,必须使用set( )函数,因为花括号“{ }”是用来创建一个空字典的。创建集合的语法格式如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_64.jpg?sign=1738849726-cwfqxoUHW86za7eD42B5ClNrbFOUe10M-0-76ee82e2a76e095288e12f364753cdbc)
或者
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_65.jpg?sign=1738849726-DyW6k29X7ngI21TYLtN1hWbrdz3gmA5X-0-61d54c963a42f3eefb02f1032bc78b6c)
下面以客户购买商品为例介绍集合的去重功能。假设某客户在10月购买了6次商品,分别是纸张、椅子、器具、配件、收纳具、配件,这里有重复的商品,我们可以借助集合删除重复值,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_66.jpg?sign=1738849726-GAreAzpV2xsxhodBGkKzwuy2YIiP6mM2-0-230bd929ed90801358d4821ca7c5e644)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_67.jpg?sign=1738849726-RMRC1C7kN4fuqtmCivGvOfggrjc8zPus-0-ce39bf40f56e1e91878a94479b1b1ded)
运行上述代码,可以看出已经删除了重复值,只保留了5种不同类型的商品名称。
同理,该客户在11月购买了4次商品,分别是装订机、椅子、器具、配件,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_68.jpg?sign=1738849726-V5BSG8FLIqkcnl2wS9BXiyiUG9RRfsDO-0-8a2c3df2ddecaab463b9af97704bec9b)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_69.jpg?sign=1738849726-oUmmSM6DTxwqJjjOqm10BghsmZDxHku2-0-c8d46fa0f90e5572155a64a566dda620)
可以快速判断某个元素是否在某个集合中。例如,判断该客户在10月是否购买了“配件”,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_70.jpg?sign=1738849726-MhMWrKUb7Uu2LYaofTBHb8g45ABujJu3-0-6122f782cf81de10e89dcc571587d7bb)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_71.jpg?sign=1738849726-asFLZB1CY8A04140So9XsUiE1qcfWnSQ-0-6b8ec40b771657abe2e0eeb0fe2f9011)
此外,Python中的集合与数学上的集合概念基本类似,也有交集、并集、差集和补集,集合之间关系的思维图如图2-1所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_72.jpg?sign=1738849726-KrFzBVuiPvqT9JYm9SOrggVMmmITmMbq-0-431929d1ab27571ab38cb4e66d9069ed)
图2-1 集合之间关系的思维图
集合的交集。例如,统计该客户在10月和11月所购买的重复商品,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_73.jpg?sign=1738849726-GPqhbQPTSa8DTuA9r9bmBqAEhJbs5KAI-0-6487868cad5b56cbf5fe61f1847c4a28)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_74.jpg?sign=1738849726-WGJfnGgMVlMeW6cjjeEGdzAIqQg4HYsG-0-9be4697654ba30a9b4da1e7962869a32)
集合的并集。例如,统计该客户在10月和11月购买的所有商品,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_75.jpg?sign=1738849726-CW1rj9ZYzHDEuuoIpiYtfKRHxOuniA7h-0-a25d6778cfecd162bacf982ddf23ab8f)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_76.jpg?sign=1738849726-oVd8hu65QWkxuu04j3xq0xbXCPgnT5Ht-0-fbbeb3f7366e2ac5aa7ba98de7845218)
集合的差集。例如,统计该客户在10月和11月所购买的不重复商品,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_77.jpg?sign=1738849726-eknj6GXHfHf230O7VpXGhnJJOknYQBUK-0-4a1752904c4d86b89efc9ad6fac3e64b)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_78.jpg?sign=1738849726-vEiU9Dc0Qe6mABEFta5ddG5ZJyGI3MWD-0-7827bcaac2915c81f6168ac71882550f)
集合的补集。例如,统计该客户在10月购买,而在11月没有购买的商品,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_79.jpg?sign=1738849726-RTovPNXh9sk03eRR6fZVKaVIbXbaqkhg-0-7d55555a16ea4e1435acb83778d61ef4)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_80.jpg?sign=1738849726-fwUOpeaw3bbblupDgitk2G4epB5NGaKc-0-f98fb5064e6ec33797a2dc5aa1ff84e6)
2.1.6 字典(Dictionary)
字典是另一种可变容器模型,并且可以存储任意类型对象。字典的每个“键”和“值”用冒号分隔,每个“键-值”对之间用逗号分隔,整个字典包括在花括号中,语法格式如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_81.jpg?sign=1738849726-oNJqXBYIqLP83xcG7Xu3VKlMAL4g8DXn-0-a9e174507e3f5c1171d617efb357622d)
需要注意的是,“键-值”对中的键必须是唯一的,但是值可以不是唯一的,且数值可以取任何数据类型,但键必须是不可变的,如字符串或数字,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_82.jpg?sign=1738849726-H5sZUYW0NuxAuvHvCXLcmJXVPgPhuSZI-0-ceda60e9fa095bbb764f7e48870695d4)
运行上述代码,创建3个字典,查看字典dict1,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_83.jpg?sign=1738849726-SoMnCWJbmPNknerZXiX11EjlxbPqbvdt-0-ff805e200dcf6708a59555e20be47dbc)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_84.jpg?sign=1738849726-zCMewoGaVo8raFtNg9wuNYRirUDGqYsw-0-2d60eb857e0a0c5d7b9e7d5a0d6b626f)
查看字典dict2,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_85.jpg?sign=1738849726-Xk6dDhavLUbfa2MEvqIkTsVnV1tgN1kx-0-ee44ee709d403ac19f65d468d9f6f58e)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_86.jpg?sign=1738849726-njLdNQW9hNk7k9zroUah8CWeXo9oOC8S-0-1153f98cdf11e3a5feb1dc289486313a)
查看字典dict3,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_87.jpg?sign=1738849726-ySa5tMCHS9aOPSQ4J7VzAA0P8hO8oOWq-0-23eca16accb76912bdf314ba70e3b692)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_88.jpg?sign=1738849726-QJPlzFO2FeBE7eJ4vxnOnOg9ZsXCkdX2-0-c1d825dadabe513315c2d405d9106b5c)
在Python中访问字典里的值时,要把相应的键放入方括号中。例如,读取字典dict3中键为“order_north”的值,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_89.jpg?sign=1738849726-wbHjeCZCSiSfBNpqdM1tyiOgrf7ovK0j-0-f310482ce8bdda1d7ddf86b21ada35ac)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_90.jpg?sign=1738849726-JLOjvDSoKX1bWYBVofijQEC596fI8TzT-0-ae4215f137f6223ece59e4ce4e7b056e)
在Python中,如果字典里没有该键就会报错,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_91.jpg?sign=1738849726-XLrbDZpZt8jGRvpvLA3iF7zpk4pxFhp2-0-1f61d37c61975acc863c6b6303bdc347)
输出错误信息如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_92.jpg?sign=1738849726-6tO2TGrxhCFRZKgV73mlbh0a6W70rXoZ-0-cf526103edbc1bf89bcd610cd310293e)
在Python中,向字典添加新内容的方法是增加新的“键-值”对,修改已有“键-值”对,例如,向字典dict2中添加键“order_sales”,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_93.jpg?sign=1738849726-R8E73bdwJubfAldbdYTsAJhH5co9Z9m0-0-fe7d9a0403158c435a824ec3cdc84aa3)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_94.jpg?sign=1738849726-t3ni1grxwOGnn73o51dzEISxs7190OT6-0-b5da019420dd3fcd3af74dd3fca50401)
在Python中,既能够删除字典中的单一元素,也能够清空和删除字典。例如,首先删除字典dict2中的键“2020”,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_95.jpg?sign=1738849726-rCB9vp5FoeOfAHMeYypzez2EinbX8aIW-0-00b97a530c6e39248395f0b5e2fc380e)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_96.jpg?sign=1738849726-nBiUjD8BQyhAQKfh151OnWdDsDlgDMd4-0-aa638704be17ed224f453cccadc8d88f)
然后清空字典dict2,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_97.jpg?sign=1738849726-VRxFYEgXfoYSBGeL4Q8dChalvVf2pIWS-0-a30232b22d79189a87b1fd9f6ad8272c)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_98.jpg?sign=1738849726-N8WDrOzpdcJFrmqMxBxY5oyDm0EtUTnk-0-873ea5ec501c69764032f376b92706d2)
最后删除字典dict2,并查看字典dict2,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_99.jpg?sign=1738849726-RvNC8DpidqzIJmiMx4MNGl8nvDcbKzAx-0-cf05772ba590c7ab64f90e33ddf4f950)
代码输出结果如下所示,会报错提示字典没有被定义。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_100.jpg?sign=1738849726-LPJ8wkriFUriDOH2th4s0j8VQo43zavc-0-ca090931fc8cdc877db42e7e5baa9abf)