![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=1739329496-rXY062T3yGBZMkb9YzIUfMC4JOnRLtw7-0-8de5b83509a895981ad1d91c22d6f788)
但是,领导需要的不是总的订单量,而是商品的有效订单量。由于还有部分客户购买商品后又进行了退单(共计8件退单),因此需要减去8件退单,输入有效订单量的代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_2.jpg?sign=1739329496-W5Zlw2xF6FGY48mLPLbfwbBcAVcyv5fx-0-07f0983044b64ff7806e9978cfaefc2c)
运行上述代码后,现在变量order_volume的数值就是有效商品的订单量891件,而不再是前面输入的899件,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_3.jpg?sign=1739329496-qIhyfeJ86VuGM3VRKXowznLwPI21l1FX-0-ca7096e8b982db87b19eefb669d09616)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_4.jpg?sign=1739329496-Rl7bMvvHqfBhGuKELRfWlAJyjjJ8uV1Q-0-8d1a224b8830380971848bb0f0171c7d)
Python中有丰富的函数,包括数学函数、随机数函数、三角函数等,表2-1列举了一些常用的数学函数。
表2-1 常用的数学函数
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_5.jpg?sign=1739329496-CiRt7v5bftbnXKhXrEZwAfIdRp0LCtuT-0-db03658878b73164518740299660189d)
下面通过案例介绍数学函数的用法,例如,我们要返回数值-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=1739329496-vVe5FzGMcAHi4AIgF8cDxXnL5PVuP2pi-0-f13fe1290062f90ba6f92836ad224b34)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_7.jpg?sign=1739329496-kegznbobsXX7FxmCmklJAz7e9KAbstfi-0-859011f573ca59e711a6eb3293eb5424)
注意:这里小数部分不是-0.439。这是由于Python默认的是数值计算,而不是符号计算,其中数值计算是近似计算,而符号计算则是绝对精确的计算,这里就不再详细介绍两者之间的差异,如果读者想深入了解,那么可以查阅相关的资料。
2.1.2 字符串(String)
字符串是Python最常用的数据类型。我们可以使用英文输入法下的单引号('')或双引号("")来创建字符串,字符串可以是英文、中文或中文英文的混合。例如,创建两个字符串str1和str2,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_8.jpg?sign=1739329496-jHbAkkeQRgQNXQWeX0RRGmwNFi3FGdFi-0-66b8313300ca1283b25e21715ef50169)
查看字符串str1,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_9.jpg?sign=1739329496-CbYSRM1gKJU0iP4eZlBknokzK7ok2Jhp-0-9dbedb444217e33c3f037643877c8071)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_10.jpg?sign=1739329496-L5128tIOi52gkeZW0uN5YuGpCjStJGvv-0-c669bffe889bdfc2350baaaaeae05158)
查看字符串str2,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_11.jpg?sign=1739329496-rDWMdnEPpCbt3FHoyfEJLGSFA7sF2NzP-0-e6360ce96d8d4ad9cc9c669c237d1e5d)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_12.jpg?sign=1739329496-6ES6171uz21ebM8BQnUdnTiDj5Vbq35Z-0-9c021709a011058c00e9c374d79a9552)
在Python中,可以通过“+”实现字符串之间的拼接,输入以下代码:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_13.jpg?sign=1739329496-tXJrY10omyh5ES3py3t9n3ru0VKuhG5P-0-242ff59e6d2baba2c114e12c62b8e6f2)
查看字符串str3,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_14.jpg?sign=1739329496-tZAnUvCpgg67DLBeQmGl3Q2D9PtE7NjK-0-c7ad60edc110a54b301b8a4383b5ee97)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_15.jpg?sign=1739329496-J8r9CQni7MuEM6YIfNrQcb0XcMUQCRvS-0-0a9e9895602f5b51e62f47c728cd5ffc)
在字符串中,我们可以通过索引获取字符串中的字符,遵循“左闭右开”的原则。需要注意的是,索引是从0开始的。例如,截取字符串str1的前5个字符,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_16.jpg?sign=1739329496-pacKNeBo2YpqjCk1SSIM112JBTzwH1RK-0-da774fc72a20304cb77e98995df2d4dc)
或者
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_17.jpg?sign=1739329496-uZLGq6YNhg8yBJmOJWVUnx9qUaykjPqq-0-7400556917f602c22626b962f95649a7)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_18.jpg?sign=1739329496-ariqL7PCaITSKFxzslYl3k5UEjJJpTmv-0-141c664d9e0dbc7c9ec2548427381a48)
我们可以看出,程序输出字符串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=1739329496-pIGVav7fDoINGpai2ctEtNioT0kqOrO1-0-588b8192119631486458b54a4261dd15)
此外,还可以使用反向索引,实现上述同样的需求,但是索引位置会有变化,分别对应-13、-12、-11、-10、-9,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_20.jpg?sign=1739329496-duhLDlEBQrcidTgWowHjctEaKmaZ6n3d-0-ebe13ecad2964aa0e13f5845ca8a9734)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_21.jpg?sign=1739329496-TSbKrTP7hYe4tUAP3Er4fYQb4rWv1nHh-0-1cb0a072848134377681ebc7f2bd92c8)
同理,我们也可以截取原字符串中的“Python”子字符串,索引的位置是6~12(包含6但不包含12),代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_22.jpg?sign=1739329496-lFe1Sk1vquLvHh6QTVlPeKtOztkxkEuE-0-621a8a302e9fc5e14629df12fcaf993b)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_23.jpg?sign=1739329496-KGm6X73Kql1LCzfhre8zxPIUQ825b2x3-0-7f3cc894b2a88df71cbaceaf737b9d73)
Python提供了方便灵活的字符串运算,表2-3列出了可以用于字符串运算的运算符。
表2-3 字符串运算符
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_24.jpg?sign=1739329496-zhYRpKEqrqpESIB2pWYoCq2EqcEXfxlK-0-c470350e0d8af8775e99807fe885fc4c)
续表
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_25.jpg?sign=1739329496-a03P5iTcaYKxthlhtXNkIRBcVjUK0DaB-0-8d8499054e35c5699bfdf20e5e030d70)
下面以成员运算符为例介绍字符串运算符。例如,我们需要判断“Python”是否在字符串变量str1中,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_26.jpg?sign=1739329496-Sl1hgofnXSxImDeRa2MOOXPZ0XiDPlEN-0-e95f965559c52bead10840819ca5e99d)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_27.jpg?sign=1739329496-30xS5PtsTluySVSMLIXkaMl0dzXxU0Wv-0-5fad270aea2b222fe90b11b7a63bd217)
输出结果为True,即“Python”在字符串变量str1中,如果不存在则输出结果为False。
2.1.3 列表(List)
列表是最常用的Python数据类型,使用方括号表示,数据项之间使用逗号分隔。注意列表中的数据项不需要具有相同的类型。例如,创建3个企业商品有效订单的列表,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_28.jpg?sign=1739329496-YeUEHbR8jcxjxpyy3N070DO55hOAVCgu-0-c2322356c318b733bb48829b55b2062b)
运行上述代码创建3个列表,查看列表list1,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_29.jpg?sign=1739329496-8dvRjwIDWKHDxgl87kzTEL5Ow4rqnsTY-0-8896490fa3b4ba4ec439183edfec3962)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_30.jpg?sign=1739329496-vCi8hzhCIw8cudDBianHjtBVL9zYw92e-0-56a8bc7a21ef4dccd3009bf9445caae1)
查看列表list2,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_31.jpg?sign=1739329496-Mz3fVJ3n6eAYDOCgwoZFzG8BNkKcj0tp-0-44852b1fbc30d40e0678d95a6a47cb65)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_32.jpg?sign=1739329496-yl4bYHED3r8nRxRQiU5NJEKx1hqeBFA3-0-59c798c130893ff923f5ffdbce2c031e)
查看列表list3,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_33.jpg?sign=1739329496-m7WrffxmLu02CB6rnaC8F1VLfHQxQKXl-0-97a41da9842acef752da210e477911e2)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_34.jpg?sign=1739329496-h6jjptbueqlAjj4TXajH8KtUkjQpsrPK-0-9d841ca4fb98ee6ba73da6edb617140c)
列表的索引与字符串的索引一样,也是从0开始的,也可以进行截取、组合等操作。例如,我们从列表list3中截取索引从1到3,但不包含索引为3的字符串,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_35.jpg?sign=1739329496-VPBaxVJoT9AdngiVYEXWHNh6sv2QDBvs-0-bd2fe9a0bdfd41913a7aa0516f4cc306)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_36.jpg?sign=1739329496-8cwys2UBHqCKnm1NFqcdg7vR07HtvG09-0-51d37a0f2013364d7b6ad095941e8efa)
可以对列表的数据项进行修改或更新,首先查看索引为1位置的数值,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_37.jpg?sign=1739329496-r02Cj8rZo2LFgD9cxJYxLHpC68nS9WYr-0-14a9dd58b181b2f64136e12c73b3867d)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_38.jpg?sign=1739329496-RJRSm5txybD0gO9for26iIBNSKAhoEwK-0-84b8e274eae54ef26cfdd9d8ee4f62ce)
然后修改列表list1中索引为1位置的数值,如将其修改为“2019年”,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_39.jpg?sign=1739329496-q1bCP3EFN7bpnBdnLEdv1YBtNOehFMgY-0-ba05060520b641c31261b6eb412361a8)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_40.jpg?sign=1739329496-IqWjj0dAw8fpGEIBAnEzoAtQFu6Z6dv8-0-94c7133a8e0b9d1e00bd3004c7a4938f)
可以使用del语句来删除列表中的元素,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_41.jpg?sign=1739329496-n7lsxfH9pa58zB6pviKmS9ixEi0hq1bi-0-5b364eefb476f0f6b425fb72cde4f4ba)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_42.jpg?sign=1739329496-Pr7yI7fXXdk6hvrpspdgMi8R9socS9Ty-0-502a3b8aafb17d4f91c8ceab27913dd4)
也可以使用append()方法在尾部添加列表项,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_43.jpg?sign=1739329496-OA4SR2BUzFUV3DEvlTTO1TnB9lYftzMr-0-2f572f2a3a89bdc81c5c3e7c8d8d67d9)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_44.jpg?sign=1739329496-zWInjo7Z2Y8Vd6Y0Kw8rB2oVVxsWesQM-0-de2dc55d5533f9e14d4fe3d1aa5c3623)
此外,还可以使用insert()方法在中间添加列表项,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_45.jpg?sign=1739329496-4gPvZjxHgyGw2naNN5yJrLdGvxXabjLE-0-facd0661a7ba062dc21300fe5ebb6adc)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_46.jpg?sign=1739329496-UsCUZiO38gIDCkDHnBRf6qyXPExhQEKY-0-1c26eeda54539bb587653269f7d105f9)
2.1.4 元组(Tuple)
Python 的元组与列表类似,不同之处在于元组的元素不能被修改。需要注意的是,元组使用的是括号,而列表使用的是方括号。创建元组很简单,只需要在括号中添加元素,并使用逗号隔开即可。例如,创建3个企业商品有效订单的元组,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_47.jpg?sign=1739329496-abSlo0ZxpABWAAiQk71yCUtkZBHkPh4X-0-1f0b369ab0cb1450ea97665109ade2e2)
运行上述代码创建3个元组,查看元组tup1,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_48.jpg?sign=1739329496-BSczPxVhqOW781BcSrP5724GcS4ItX4r-0-b70a7d7dfc4447a3487cfb21e38c0408)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_49.jpg?sign=1739329496-KgpZ9WKDLD467zJZmMT0SHERW1bC0rMt-0-1fd80d5847c07bb3d3625dbe9111656e)
查看元组tup2,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_50.jpg?sign=1739329496-lzlsRO2ixkczsh6bNm2DBSDzYKNE4yRd-0-34b2598f954a29d0c9a3a0a1f6a2f13d)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_51.jpg?sign=1739329496-sfBFsQxbF793puNsVddrtCyhdU0ppkJb-0-7e6ac870bbc4fddcf0247eb599f667f7)
查看元组tup3,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_52.jpg?sign=1739329496-CDLzfRFlS4e60YQdWvvotxdvd5TipEDD-0-11b8d99b7ca3c8c330a6bf404cc9a8ee)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_53.jpg?sign=1739329496-3VuHGipJJ08vULIa23IxaeiXT93o1jQW-0-851edaf7c47280d0fd643d71e20b98e0)
当元组中只包含一个元素时,需要在元素后面添加逗号,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_54.jpg?sign=1739329496-nlwLeA0Umpd8L3bUw5WL0QypguLkbHPH-0-7c8bb1fae97d403c59ac12f9104e0207)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_55.jpg?sign=1739329496-SnEd4KCmMMZIgPTRlFS3NqeslC3Yt4Lh-0-ec245b1d4f422cb586361d09311ab0a3)
否则括号会被当作运算符使用,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_56.jpg?sign=1739329496-lSk2kwwwTqK03lmb1NL7AwGXeuGfwsTM-0-6db1cce3e824c9e99ac8467f2c9dc54a)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_57.jpg?sign=1739329496-Zc6EKbk2scGAs2VvcU99p5Os8fmA8CCd-0-d44d3f94a6e6bff161ac56e5c0cc7c0e)
元组的索引与字符串的索引一样,也是从0开始的,也可以进行截取、组合等操作。例如,我们从元组tup3中截取索引从1到3,但不包含索引为3的元素,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_58.jpg?sign=1739329496-nY2CzEaeWzB10g0A6GXpkT3qtc9CBltJ-0-b9c46403d22633aa24a29dc24597ac71)
代码输出结果如下。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_59.jpg?sign=1739329496-r6aR5Bg7Kv9Ud0g84MRxXz3qvjRlliHl-0-8c3f730a5244e57f8bb00de13255a49b)
在Python中,也可以通过“+”实现对元组的连接,运算后会生成一个新的元组,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_60.jpg?sign=1739329496-bbHi2tv9k9vy7BiszXFZkh7tqP6VErea-0-8f2222a555266e0041141b132dfa75a4)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_61.jpg?sign=1739329496-bqryjv9fBnTSYTCOipfkS6Y4rHAoyeao-0-bd7cd2594d7d1aa4d66d60d1337f6a6c)
元组中的元素是不允许被修改和删除的。例如,修改元组tup6中第4个元素的数值,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_62.jpg?sign=1739329496-tKBPdd40x7XkfcTODfNGX1f6SPiBhZgD-0-1e78ff035b7841dd53ded0496a7c1774)
运行上述代码,错误信息如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_63.jpg?sign=1739329496-DkdTWz6XizhPLm9u0slbNs9698c3gDGp-0-4f016d7bf0fdba7d2a00ac6e8da7300e)
2.1.5 集合(Set)
集合是一个无序的不重复元素序列,可以使用花括号“{}”或set( )函数创建。需要注意的是,创建一个空集合,必须使用set( )函数,因为花括号“{ }”是用来创建一个空字典的。创建集合的语法格式如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_64.jpg?sign=1739329496-t3uM8ncw2UOLUFlKoQdicWnF54cqlpAF-0-3a67d2b662c063c5390ae19aba4b821e)
或者
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_65.jpg?sign=1739329496-MtB6QV9xi0NX2qUnuTdwwuAVywGFyYOO-0-976fff0c194271f466260578d30b9c10)
下面以客户购买商品为例介绍集合的去重功能。假设某客户在10月购买了6次商品,分别是纸张、椅子、器具、配件、收纳具、配件,这里有重复的商品,我们可以借助集合删除重复值,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_66.jpg?sign=1739329496-kDkOfXmrRFxwtjYhGhe3hcAZoUSAVXA6-0-ca55238e73d3789061c9c528656afe6d)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_67.jpg?sign=1739329496-Nwmn7OWcrej6FnGKpqYA5QyJjAGq1Vga-0-599d9317419609f4b2c8044ec763abc3)
运行上述代码,可以看出已经删除了重复值,只保留了5种不同类型的商品名称。
同理,该客户在11月购买了4次商品,分别是装订机、椅子、器具、配件,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_68.jpg?sign=1739329496-Tb8baXazzsyvs90LWVO9TSY0L07mROgf-0-3464289b4ae89393ebcb4ccc4dbf7836)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_69.jpg?sign=1739329496-CJFvH9GHvxofddB28t3cMp5dEEh6F3RG-0-4b8ac829caa95be54da213ce4033e866)
可以快速判断某个元素是否在某个集合中。例如,判断该客户在10月是否购买了“配件”,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_70.jpg?sign=1739329496-x3XZtpo2jBbc6lwjuDp5OfRg2Xv6IFvn-0-f98ea9346450d764c810404f0fcfa8a7)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_71.jpg?sign=1739329496-MfH0MCRFvG3p89X8uSAUB8DHSXVB2hJW-0-e2dc265f70521c04084828dd043b4f57)
此外,Python中的集合与数学上的集合概念基本类似,也有交集、并集、差集和补集,集合之间关系的思维图如图2-1所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_72.jpg?sign=1739329496-XqKeOeUJWqAgSuCy7ub070DUiKxfO8uC-0-c0ae6fd3b186e66e5279e261021be344)
图2-1 集合之间关系的思维图
集合的交集。例如,统计该客户在10月和11月所购买的重复商品,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_73.jpg?sign=1739329496-mXy17eZ7vqJyfubBpOeiOYlvFnp9bCQZ-0-4329cf122a3790f90dd478a43e63c5b5)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_74.jpg?sign=1739329496-AaMfsUY5tuqANEJEfVL6JlqT0CYXo74N-0-1d0fe2ea2052662be0c67c63188e96bb)
集合的并集。例如,统计该客户在10月和11月购买的所有商品,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_75.jpg?sign=1739329496-RREyvUeuNeahtwLC8AUbRyMQ70SODan7-0-3ee3d810f519a2bffa98da600aa9d37f)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_76.jpg?sign=1739329496-ynEmP4CHQcuADsoADfZm67TIwmLhSMqQ-0-b21e21cdc3132d0c720d6ede04b22953)
集合的差集。例如,统计该客户在10月和11月所购买的不重复商品,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_77.jpg?sign=1739329496-Lm50xOFNxMrKX9GKi2eECiea3CkfGWWe-0-0425d32729551762be89f5d6084a57de)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_78.jpg?sign=1739329496-m2ANGhT4BBGtqUEH35OmFFQBtYVhzb2I-0-fce159338f99d26cc64b9a1103f2e23f)
集合的补集。例如,统计该客户在10月购买,而在11月没有购买的商品,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_79.jpg?sign=1739329496-jYOwS9Go2ZdwY0MquAoSQnxkcKZueBTz-0-c4909773d4e7b12d0c23ee7466b56535)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_80.jpg?sign=1739329496-ZFdpOzCChHDd1VAgLSYBKDhjFUmWdUe3-0-3a15c34dcd552bd023c47f340a68f1a5)
2.1.6 字典(Dictionary)
字典是另一种可变容器模型,并且可以存储任意类型对象。字典的每个“键”和“值”用冒号分隔,每个“键-值”对之间用逗号分隔,整个字典包括在花括号中,语法格式如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_81.jpg?sign=1739329496-zydBm8zVwIJ2eIXPQ3GnS7g265Fnk0nP-0-baa278e7144267986732d258e5b2c9c3)
需要注意的是,“键-值”对中的键必须是唯一的,但是值可以不是唯一的,且数值可以取任何数据类型,但键必须是不可变的,如字符串或数字,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_82.jpg?sign=1739329496-kB8YBYSErMBljUS4bngzPDjakWpZdMbV-0-0e4ec272290d799c63ec126556700b6f)
运行上述代码,创建3个字典,查看字典dict1,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_83.jpg?sign=1739329496-ctuPBUQoZAB3Kz2fjiYq1aV0QvpnMWkV-0-e53638e983caf851bd6410b150f6215c)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_84.jpg?sign=1739329496-MYLG5e5kndi7LMNTIKGphrZgm1JqROIk-0-862577c2adc7b17503ba4e7dd5dd84e9)
查看字典dict2,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_85.jpg?sign=1739329496-Qg9u2TIYIQDzF97tGKTG3QfPG7Jeqe3X-0-a41bf5ec72eef97f058b1a194a7e7f10)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_86.jpg?sign=1739329496-ySNLTX3zbLdgX7YTFbXhaLXGhwmE4Da3-0-fa984128ad03f16a0f95c3f77edf022d)
查看字典dict3,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_87.jpg?sign=1739329496-yuuAigtEVEtgQOJOnhY2GYbbpeAbzbav-0-ef71a284e204c9f0904b26f83f3f063f)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_88.jpg?sign=1739329496-SyGvotVFIzD8ydSrkbgIA2Ee1VXy0XsD-0-d4322daf4bb41f33ce95769d2be90a72)
在Python中访问字典里的值时,要把相应的键放入方括号中。例如,读取字典dict3中键为“order_north”的值,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_89.jpg?sign=1739329496-aTyzAjPDsvJEqDOoytl2qyxYBhyfKPyp-0-74abababf6e834e210e2fca7e16f1e63)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_90.jpg?sign=1739329496-PJqE1HOf9ngba6PqTGnB0PBR2eaVxRrk-0-8b63e0b3bfd109765f31ff98f2c71cc9)
在Python中,如果字典里没有该键就会报错,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_91.jpg?sign=1739329496-FQsCENZxMke9H9RhclKUt5elSmXlwDgR-0-977abad98c7b009c2c3279e9a231cffe)
输出错误信息如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_92.jpg?sign=1739329496-MVPkkb01aW3BF5JYM4pKn8cCG91aJE24-0-b8b4f5b179040bb22987f4318c1b7ecd)
在Python中,向字典添加新内容的方法是增加新的“键-值”对,修改已有“键-值”对,例如,向字典dict2中添加键“order_sales”,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_93.jpg?sign=1739329496-7guye9ThDaZnTJHZMzhz2Sf6gQQwQ1TP-0-fe16afd7b6fb0ff58dcff472f5c5dea4)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_94.jpg?sign=1739329496-JF0mVZzHJM90eHGRN4KvZXs0Wi8so8xo-0-1c0ff41c2bbd9397659810c9c8463404)
在Python中,既能够删除字典中的单一元素,也能够清空和删除字典。例如,首先删除字典dict2中的键“2020”,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_95.jpg?sign=1739329496-d6w9kZw7nVVIEW6w7bc9YahqMdetTyay-0-85de86d306fef224fd3e6e7657952b07)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_96.jpg?sign=1739329496-rzsehhZbBEnqhPLdse7DkTuLn50RP7Be-0-4e0ff5ee2afe3d68e74a7cb23cf40156)
然后清空字典dict2,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_97.jpg?sign=1739329496-Xqm3tRcmWUZHGWZ6hiNtIcsH3c67SN3e-0-fcb468086249254f8bbe01206f2208b8)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_98.jpg?sign=1739329496-JaKO2nVK9zNAZLVPqL57BhHEps0HvnGB-0-e74f43fb2b13ff00be8a8da0c94c4f4c)
最后删除字典dict2,并查看字典dict2,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_99.jpg?sign=1739329496-PtPpBi1uOloSnAnS7q84anppy3VblDjJ-0-64bf5a45e91b8124fa780dc486cbe7b0)
代码输出结果如下所示,会报错提示字典没有被定义。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_100.jpg?sign=1739329496-cI6kuJWD84lP9ll4iBbI3QGvRFaOQPDC-0-c6cb11cefdb06f3de750187afa8739ba)