刚刚使用Python进行数据分析,分享一些概念和想法,希望可以大家一起讨论,如果理解或者表达有不准确的地方,请多多指点,不吝赐教,非常感谢~~
zip()函数是将两个可迭代的对象作为参数,一一对应,返回由这些元组组成的对象。
可以遍历但是不可以取值,如果想取值就要结合参数的数据类型,将返回的对象list()化或者转化成字典{}等。
所以要注意的是:
- 是两个可迭代的对象
- 返回的也是一个对象,所以如果打印zip()结果,返回的是对象存储的地址
这样做的好处是节约了不少的内存。
如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压还原(此处不做解释)。
drinks = ["espresso", "chai", "decaf", "drip"]
caffeine = [64, 40, 0, 120]
zipped_drinks=zip(drinks,caffeine)
print(zipped_drinks) # 结果是对象存储地址 <zip object at 0x1a22fe4248>
print(type(zipped_drinks)) # 结果是 <class 'zip'>
for i in zipped_drinks: ** 可以遍历**
print(i)
for i,m in zipped_drinks: **可以遍历**
print(i,m)
--------------------------------------------
# 使用i遍历的结果,是作为整体输出:
('espresso', 64)
('chai', 40)
('decaf', 0)
('drip', 120)
# 使用i,m遍历结果,是作为单个“元素”输出
espresso 64
chai 40
decaf 0
drip 120
一定要注意,无论什么形式输出,都只能遍历而已,无法单独取值出来!!!
针对想取值的问题,我们可以使用 list() 转换来输出列表或者使用字典。至于到底是序列化还是转成字典,要根据zip中的元素的数据类型而定。下面以转换成字典为例,序列化方式请详见python3基础语法——对序列基本操作。
# 将 zip转换成字典类型
drinks_to_caffeine={key:value for key,value in zipped_drinks}
print(type(drinks_to_caffeine)) # 结果 <class 'dict'>
print(drinks_to_caffeine) **结果为 {}**
此时,我们可以看到数据类型转换成字典,但是字典无法直接打印字典实例,具体如何“打印字典元素”详见《python3基础语法——对字典基本操作(创建/添加/修改/取值/删除)》:https://mp.csdn.net/mdeditor/94142002#
** 需要对比:字符串.format()方法和直接使用字符串相加