【Python基础】 Zip()函数实例

Zip()函数:

#参数说明:iterabl – 一个或多个迭代器;
zip([iterable, …])

zip()是Python的一个内建函数,它接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个 tuple(元组),然后返回由这些tuples组成的list(列表)。若传入参数的长度不等,则返回list的长度和参数中长度最短的对象相同。利用*号操作符,可以将list unzip(解压)。(在 Python 3.x 中为了减少内存,zip() 返回的是一个对象。如需展示列表,需手动 list() 转换)

不废话直接上实例:

my_list = [11,12,13]
my_tuple = (21,22,23)

print([x for x in zip(my_list,my_tuple)])

my_dic = {31:2,32:4,33:5}

print([x for x in zip(my_dic)])

my_pychar = "python"
my_shechar = "shell"

print([x for x in zip(my_pychar,my_shechar)])

my_list1 = [11,12,13]
my_tuple1 = (21,22,23)

print(list(zip(my_list1,my_tuple1)))

'''输出结果:
[(11, 21), (12, 22), (13, 23)]
[(31,), (32,), (33,)]
[('p', 's'), ('y', 'h'), ('t', 'e'), ('h', 'l'), ('o', 'l')]
[(11, 21), (12, 22), (13, 23)]
'''
#在运行zip(*xyz)之前,xyz的值是:[(1, 4, 7), (2, 5, 8), (3, 6, 9)],zip(*xyz) 等价于 zip((1, 4, 7), (2, 5, 8), (3, 6, 9)),运行结果是:[(1, 2, 3), (4, 5, 6), (7, 8, 9)]
x = [1, 2, 3]
y = [4, 5, 6]
z = [7, 8, 9]
xyz = zip(x, y, z)
u = zip(*xyz)

print(u)
print(list(u))

'''输出结果:
<zip object at 0x000001FD35348EC8>
[(1, 2, 3), (4, 5, 6), (7, 8, 9)]
'''
#实现矩阵转置
x=[[1,2,3],[4,5,6],[7,8,9]]
y = zip(*x)
print(list(y))

'''输出结果:
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
'''
#构造字典:
x = ['a', 'b', 'c']
y = ['x', 'y', 'z']
z = zip(x, y)
d = dict(z)
print(d)

'''输出结果:
{'a': 'x', 'b': 'y', 'c': 'z'}
'''
#其他使用:
# [x] * 3生成一个列表的列表,它有3个元素,[x, x, x]
x = [1, 2, 3]
r = zip(* [x] * 3)
print(list(r))

# [iter(a)]表示每次取一个元素,[iter(a)] * 2表示迭代两次,每次步长为2,也即是每次取了三个元素,迭代完就变成了[1, 3, 5], [2, 4, 6],然后再使用zip()就变成了[(1, 2), (3, 4), (5, 6)]
a = [1, 2, 3, 4, 5, 6]
b = zip(*([iter(a)] * 2))
print(list(b))

'''输出结果:
[(1, 1, 1), (2, 2, 2), (3, 3, 3)]
[(1, 2), (3, 4), (5, 6)]
'''

实际编程使用例子:

import requests
from lxml import etree

headers = {
    "user-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36"
}

# 请求拿到网站数据
response = requests.get("xxx")

# 抽取想要数据 图片标题 图片链接
xml = etree.HTML(response.text) # 整理成xml文档对象
tit_list = xml.xpath('//img[@class="xx"]/@alt')
src_list = xml.xpath('//img[@class="xx"]/@data-original')

#for xx in  zip()
for tit, src in zip(tit_list, src_list):
    # 下载图片
    response = requests.get(src, headers=headers)
    fileName = "phone\\" + tit + ".jpg"
    print("正在保存图片文件:" + fileName)
    # 保存图片
    with open(fileName, "wb") as f:
        f.write(response.content)
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Pythonzip函数是一个内置函数,用于将多个可迭代对象打包成一个元组序列的迭代器。这些可迭代对象可以是列表、元组、字符串、集合等。zip函数会按照最短的可迭代对象进行打包,生成的元组中每个元素由输入的可迭代对象的对应位置的元素组成。例如,如果有两个列表`a = [1, 2, 3]`和`b = ['a', 'b', 'c']`,使用zip函数可以将它们打包成一个新的列表`[(1, 'a'), (2, 'b'), (3, 'c')]`。 使用zip函数可以方便地进行多个可迭代对象的并行遍历。通过将多个可迭代对象打包成一个元组序列,我们可以同时访问每个可迭代对象的相应元素,这在处理数据的时候非常有用。例如,可以使用zip函数来计算两个列表中对应位置的元素之和,或者将两个列表中的元素一一对应起来进行处理。 需要注意的是,zip函数返回的是一个迭代器,而不是一个列表。如果需要得到一个列表,可以使用list()函数将迭代器转换为列表。 总而言之,Pythonzip函数是一个非常有用的函数,用于将多个可迭代对象打包成一个元组序列的迭代器,方便进行并行遍历和处理。<span class="em">1</span> #### 引用[.reference_title] - *1* [Python zip函数打包元素实例解析](https://download.csdn.net/download/weixin_38671819/12857277)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Koma_zhe

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值