当前位置: 首页 > article >正文

python之zip函数

华子目录

  • `zip`的功能
  • 传递n个参数时
  • 不传参数
  • 传一个参数时
  • 传递长度不等的参数
  • 循环并列迭代
  • 建立字典
  • 解压缩

zip的功能

  • zip的基本用法是将两个或多个可迭代对象作为参数(可以是字符串、列表、元组、字典、集合等),返回一个 zip对象。这个 zip对象是一个可迭代的。
  • Python3版本返回的是对象,例如:<zip object at 0x7fabbe8777d0>,主要是为了减少内存。通过list(zip(iterable...)),即可转换为列表
  • Python2版本返回的是列表
  • 最短输入迭代用完时,迭代器停止没有参数时,它返回一个空的迭代器

传递n个参数时

num_list = [1, 2, 3]
str_tuple = ('a', 'b', 'c')
result = zip(num_list, str_tuple)
print(result)
# print(list(result))
print(dict(result))
# print(set(result))
# print(tuple(result))
<zip object at 0x000001E89F46EBC0>
{1: 'a', 2: 'b', 3: 'c'}

不传参数

  • 不传参数时,返回一个对象
result = zip()
print(result)
<zip object at 0x000001C5046CE880>

传一个参数时

  • 迭代对象字典时,zip的实际操作的对象是它的
num_dict = {'1':'a', '2':'b', '3':'c'}
result = zip(num_dict)
print(list(result))
[('1',), ('2',), ('3',)]
  • 不是字典时
num_list = [1, 2, 3]
result = zip(num_list)
print(list(result))
[(1,), (2,), (3,)]

传递长度不等的参数

  • 当传递长度不等的参数时,以最短的参数为主
num_list = [1, 2, 3]
num_tuple = ('a','b')
result = zip(num_list, num_tuple)
print(list(result))
[(1, 'a'), (2, 'b')]

循环并列迭代

  • 2个参数
num_list = [1, 2, 3]
num_tuple = ('a','b', 'c')
for k, v in zip(num_list, num_tuple):
    print(k, v)
1 a
2 b
3 c
  • 3个参数
num_list = [1, 2, 3]
num_tuple = ('a','b', 'c')
num_str = "ABC"
for k, v, S in zip(num_list, num_tuple, num_str):
    print(k, v, S)
1 a A
2 b B
3 c C

建立字典

num_list = [1, 2, 3]
num_tuple = ('a','b', 'c')
result = zip(num_list, num_tuple)
print(dict(result))
{1: 'a', 2: 'b', 3: 'c'}

解压缩

在需要解压的参数前加个*

  • 2个参数
num_list = [(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd')]
num,str1 = zip(*num_list)
print(num)
print(str1)
(1, 2, 3, 4)
('a', 'b', 'c', 'd')
  • 3个参数
num_list = [(1, 'a', 'A'), (2, 'b', 'B'), (3, 'c', 'C'), (4, 'd', 'D')]
num,str1,STR1 = zip(*num_list)
print(num)
print(str1)
print(STR1)
(1, 2, 3, 4)
('a', 'b', 'c', 'd')
('A', 'B', 'C', 'D')

http://www.kler.cn/news/283475.html

相关文章:

  • 【大模型系列篇】词向量 - 从Word2Vec到ELMo
  • C# 匿名函数 delegate(参数...){ }
  • LeetCode 热题100-41 二叉树的层序遍历
  • 如何使用 Pytest 进行测试
  • SSRF和CSRF实战复现
  • 【自动驾驶】决策规划算法概述
  • Kafka消息积压的典型场景及解决方案
  • SSRF以及CSRF
  • Vue3.0项目实战(二)——大事件管理系统登录注册功能实现
  • 快讯 | Midjourney开拓硬件领域:苹果前经理加盟助力发展
  • 防御Nginx负载均衡中的拒绝服务攻击:策略与实践
  • OpenCV详细介绍
  • Eureka的生命周期管理:服务注册、续约与下线的完整流程解析
  • uniapp,uview:inputnumber或者input,当type为number的时候,在ios里输入不了小数的问题
  • 本地部署aniportrait
  • 【Redis】Redis 的消息队列 List、Streams—(六)
  • Golang测试func TestXX(t *testing.T)的使用
  • 【GPT】Coze使用开放平台接口-【2】创建工作流-语音伪造检测工作流
  • Golang | Leetcode Golang题解之第375题猜数字大小II
  • XSS漏洞
  • 数组、向量与矩阵
  • 【Unity优化】优化Android平台拖动地图表现
  • zabbix安装过程中仓库不可用问题解决
  • uniapp中H5网页怎么实现自动点击事件
  • 自动化测试经典面试题
  • 拿到一个新项目,如何开展测试?
  • 基于状态机实现WIFI模组物联网
  • 2.10鼠标事件
  • MySQL(六)——多表查询
  • ZaKi:Ingonyama的Prover market基础设施