1.zip函数

zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。

如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。

zip 语法:

zip([iterable, ...])

参数说明:

iterable -- 一个或多个迭代器;

返回值:

返回元组列表。

实例(Python 2.0+)

>>> a = [1,2,3]
>>> b = [4,5,6]
>>> c = [4,5,6,7,8]
>>> zipped = zip(a,b)     # 打包为元组的列表
[(1, 4), (2, 5), (3, 6)]
>>> zip(a,c)              # 元素个数与最短的列表一致
[(1, 4), (2, 5), (3, 6)]
>>> zip(*zipped)          # 与 zip 相反,*zipped 可理解为解压,返回二维矩阵式
[(1, 2, 3), (4, 5, 6)]

实例(Python 3.0+)

>>> a = [1,2,3]
>>> b = [4,5,6]
>>> c = [4,5,6,7,8]
>>> zipped = zip(a,b)     # 返回一个对象
>>> zipped
<zip object at 0x103abc288>
>>> list(zipped)  # list() 转换为列表
[(1, 4), (2, 5), (3, 6)]
>>> list(zip(a,c))              # 元素个数与最短的列表一致
[(1, 4), (2, 5), (3, 6)] >>> a1, a2 = zip(*zip(a,b))          # 与 zip 相反,zip(*) 可理解为解压,返回二维矩阵式
>>> list(a1)
[1, 2, 3]
>>> list(a2)
[4, 5, 6]
>>>

2.enumerate() 函数

  • enumerate() 函数:用于将一个可迭代的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。

再来看看enumerate() 函数的语法结构:

  • enumerate(sequence, [start=0]),其中sequence是一个可迭代序列,start是一个可选参数,表示序列下标的起始位置;
  • enumerate()函数得到的是多个值,我们需要采用“序列解包”的方式,获取到每一个元素。

判断是否是可迭代对象:

from collections.abc import Iterable

print(isinstance("小甜甜", Iterable))
# True
print(isinstance([1,True,2.3],Iterable))
# True
print(isinstance(1, Iterable))
# False
print(isinstance(range(10), Iterable))
# True

从中可以看出,列表、元组、字符串都是可迭代对象。

序列解包

通俗的说:就是一次将多个变量赋值给多个值。很简单,不要想的太高深,我们简单举个例子你就知道了。

x, y = (12, 54)
print(x) # 12
print(y) # 54

enumerate() 函数的简单使用

该函数最常就是配合for循环使用,我们就以此为例,为大家演示enumerate() 函数的用法。

需求:打印出班级中大于18岁的同学名字;

如果使用普通的for循环:

i = 0
name = ["张三", "李四", "王五"]
lis = [13, 22, 43]
for element in lis:
if element >= 18:
print(i, name[i], lis[i])
i += 1

如果for循环,配合enumerate()函数使用:

name = ["张三", "李四", "王五"]
lis = [13, 22, 43]
for index, value in enumerate(lis):
if value >= 18:
print(index, name[index], value)
 
 

最新文章

  1. Html5 Canvas核心技术(图形,动画,游戏开发)--基础知识
  2. 深入理解OpenGL拾取模式(OpenGL Picking)
  3. 利用matlab编写实现显示fmri切片slice图像 混合显示 不同侧面显示 可叠加t检验图显示 by DR. Rajeev Raizada
  4. qqq
  5. nodejs -mysql模块链接数据库创建库创建表单。
  6. C# RAS 非对称加密类 支持长字符串
  7. 【HDOJ】1403 Longest Common Substring
  8. JFreeChart多坐标轴曲线图
  9. 到底什么样的企业才适合实施SAP系统?
  10. NodeJs实现自定义分享功能,获取微信授权+用户信息
  11. lr12脚本参数化
  12. 5DAY高级权限
  13. 使用JS监听键盘按下事件(keydown event)
  14. WIN10安装scrapy/channels等不成功的解决方式
  15. 第17章 EXTI—外部中断/事件控制器
  16. Jmeter(二十二)_脚本上传Gitlab
  17. [ios]Xcode常用快捷键
  18. Zookeeper原理分析之存储结构Snapshot
  19. [转]用python爬虫抓站的一些技巧总结 zz
  20. perl 计算方差中值平均数 Statistics::Descriptive;

热门文章

  1. 糟了,线上服务出现OOM了
  2. Linux根据时间过滤文件
  3. 驱动开发:Win10内核枚举SSDT表基址
  4. 后端框架的学习----mybatis框架(9、多对一处理和一对多处理)
  5. C# RulesEngine 规则引擎:从入门到看懵
  6. day03-CSS
  7. 论文笔记 - Noisy Channel Language Model Prompting for Few-Shot Text Classification
  8. 写一个shell,自动执行jmeter测试脚本
  9. 2022春每日一题:Day 23
  10. 数据结构初阶--顺序表(讲解+C++类模板实现)