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

python中的zip函数

最近刷leetcode,以及处理数据的时候,发现python中一个平时很少关注的函数zip,合理运用的话,可以规避很多算法层面上的逻辑流程结构,算是python搞算法部分一个合理偷懒的作弊函数吧!

zip() 函数基本概念

zip() 函数将多个可迭代对象(如列表、元组等)"打包"在一起,创建一个迭代器,返回元组的序列。

基本语法

zip(*iterables)
  • *iterables: 一个或多个可迭代对象

举例来说:

1,2个列表(或者2个可迭代基本元素的对齐打包):

list1 = ['a', 'b', 'c']
list2 = [1, 2, 3]result = zip(list1, list2)
# 结果: [('a', 1), ('b', 2), ('c', 3)]

注意到此时这里的zip已经是一个整合打包之后的迭代器了,

所以如果要访问元素的话

(1)需要进行迭代

(2)或者直接将该迭代器显式转换为其他的基本可迭代数据格式:
比如说是list列表,或者是元组tuple之类,

2,多个列表(同上):

names = ['Alice', 'Bob', 'Charlie']
ages = [25, 30, 35]
cities = ['New York', 'London', 'Tokyo']
list(zip(names,ages,cities))

如果是长度不同的列表进行对齐的话,注意!这里是不会广播的,有的学生很容易把这里的对齐和numpy等高维数组处理中的广播broadcast机制混淆在一起,

但是实际上合并的时候是以短的序列为主:

实际上,数据敏感的人,其实一眼就可以看出来zip处理数据的方式,可以很自然的和dict也就是key-value字典的映射/组织规则联系起来,

这个一般是在数据处理中非常常见,我们在处理比较复杂的生物序列数据,比如说是fasta格式的数据(header+content其实可以分离开来当作是不同的key、value向量,如果要进一步对header进行处理的话,其实是可以细分为多个元素级别的dict),或者是其他的问题。

我们一般是key、value分离来处理的,

所以这个时候可以使用zip来重新组织分离的key-value为新的dict格式数据,当然,我们其实可以继续保留这个zip打包对齐的数据,因为一般的dict都是key-value的二元对齐,但是我们在zip中其实是可以打包多个数据的,也就是达到多元对齐,然后我们就可以按照需求从里面按照数字下标索引index切出不同的复杂的字典格式数据。

相关文章:

  • Java集合 - ArrayList底层源码解析
  • C++标准库大全(STL)
  • jupyter内核崩溃
  • 第四章 指令系统
  • 强化学习 PPO
  • 红帽认证工程师(RHCE):掌握Linux自动化的关键
  • Python Day50 学习(仍为日志Day19的内容复习)
  • 全链路实时感知:网络专线端到端监控运维
  • 1万美元iO bounty破解之旅
  • 《Deep Residual Learning for Image Recognition》(深度残差学习在图像识别中的应用)
  • Active Directory Certificate Services(AD CS)攻击基础
  • 泰国跨境电商系统开发:多语言多币种 + 国际物流对接,中泰贸易桥梁
  • 影刀学院课程地图导航汇总
  • 数据库中的索引作用:索引分类、索引失效、聚集索引和非聚集索引
  • 构建高效CMDB管理体系:企业数字化转型的基石
  • tp3.1临时连接指定数据库,切片分类in查询,带过滤需要的数据
  • 工业自动化发展:工业相机在机器视觉领域的应用趋势
  • OpenLayers 图层控制
  • 14.安卓逆向2-frida hook技术-HookJava主动调用
  • 离线部署minio以及主从复制
  • 辽阳网站建设企业/市场营销毕业论文
  • 网站模板选择/潍坊网站建设解决方案
  • 做公司的网站有哪些东西吗/杭州网站推广大全
  • 珲春建设银行网站/百度关键词排名
  • 深圳做网站有哪些/重庆seo薪酬水平
  • 上海专业做网站公司报价/上海牛巨微seo