zip函数

zip()一般传入可迭代对象(不止一个),将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的zip对象(python2返回元组),需要手动使用tuple、list等序列转换成可使用的对象。

打包

# 传入一个可迭代对象
data = [i for i in range(3)]
print(list(zip(data)))
# 传入多个可迭代对象,元素个数相对应
data = [i for i in range(3)]
data2 = [j for j in range(3)]
print(list(zip(data, data2)))
# 传入多个可迭代对象,元素个数不对应,会选取元素最少的可迭代对象作为对应
data = [i for i in range(3)]
data2 = [j for j in range(4)]
print(list(zip(data, data2)))



以最后一个为例,流程为

[0, 1, 2]
[0, 1, 2]
一一对应,转变为
[(0, 0), (1, 1), (2, 2)]

解包

只需要在打包的对象前面添加*即可

data = [i for i in range(3)]
data2 = [j for j in range(4)]
ret = list(zip(data, data2))
print(ret)
print(*ret)
# 恢复成原来的两个可迭代对象,不过是以列表格式
print(list(zip(*ret)))

*在不同场景下的区别

1.在非函数或方法中的参数中,类似于在zip中的,就是解包操作,将元组解开为多个元组,也可以再进行zip还原成原来的可迭代对象

print(	list(zip(*ret)))

2.在函数或方法的参数中的*

作为可变参数,传入时以元组形式呈现

def test(m, *args):
print(m, args) test('sa', 'asd', 'qwe')



需要注意的是,目前发现当必选参数添加形参名称时,后面的可变参数无法正常设置,如下所示

test(m='sa', 'asd', 'qwe')

** 的使用场景

一般出现在函数或方法的可变关键字参数,以字典形式呈现

def test(m, **kwargs):
print(m, kwargs) test(1, a=1,b=2)

python zip、*、**理解的更多相关文章

  1. python zip文件密码爆破

    #!/usr/bin/env # coding=UTF-8 import zipfile import threading import os import sys class CrackZip: d ...

  2. python zip函数(11)

    一.zip函数描述和使用 zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象,返回的结果可以直接强转为list列表,这样做的好处是节约了不少的 ...

  3. python zip()函数

    描述 zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表. 如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符 ...

  4. Python zip Python zip函数

    zip([iterable, ...])zip()是Python的一个内建函数,它接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个tuple(元组),然后返回由这些tuples组成的li ...

  5. 【转】Python zip() 函数

    转自:http://www.runoob.com/python/python-func-zip.html 描述 zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回 ...

  6. python property理解

    一般情况下我这样使用property: @property def foo(self): return self._foo # 下面的两个decrator由@property创建 @foo.sette ...

  7. Python ZIP 文件创建与读取

    Automate the Boring Stuff 学习笔记 02 Python 内置的 zipfile 模块可以对文件(夹)进行ZIP格式的压缩和读取操作.要进行相关操作,首先需要实例化一个 Zip ...

  8. python zip()

    >>> help(zip) Help on built-in function zip in module __builtin__: zip(...) zip(seq1 [, seq ...

  9. python 深入理解 赋值、引用、拷贝、作用域

    在 python 中赋值语句总是建立对象的引用值,而不是复制对象.因此,python 变量更像是指针,而不是数据存储区域, 这点和大多数 OO 语言类似吧,比如 C++.java 等 ~ 1.先来看个 ...

随机推荐

  1. Dns2tcp隧道

    0x01 dns2tcp绕过的原理 dns2tcp是一款基于c/s架构的软件,它可以将通信报文夹藏在udp协议的TXT解析记录中,进而形成dns隧道.dns隧道通过dns2tcpc对本地端口的监听,实 ...

  2. springcloud + nacos实现共用基础服务(灰度版本)

    背景: 当我们使用微服务时,若想在本地联调就需要启动多个服务,为了避免本地启动过多服务,现将注册中心等基础服务共用.当我们在服务A开发时,都是注册到同一个nacos,这样本地和开发环境的服务A就会同时 ...

  3. Next.js 在 Serverless 中从踩坑到破茧重生

    作者 杨苏博,偏后端的全栈开发,目前负责腾云扣钉的 Cloud Studio 产品.在团队中负责接技术架构设计与 Review.Cloud Studio 编辑器内核设计与开发.部分核心插件设计与开发: ...

  4. Windows UIA自动化测试框架学习--获取qq好友列表

    前段时间应公司要求开发一款针对现有WPF程序的自动化测试工具,在网上查资料找了一段时间,发现用来做自动化测试的框架还是比较多的,比如python的两个模块pywinauto和uiautomation, ...

  5. Nexus5x 刷机

    1.刷机方式 线刷 线刷的本质的是对分区的全部内容的替换,线刷的包通常比较大. 卡刷 顾名思义,将升级包放在存储卡上,然后进入Recovery引导模式对系统进行刷机.卡刷本质是对文件的替换过程.它不会 ...

  6. 实验二——以点类 Point 为基类设计圆类 Circle

    学习内容:以点类 Point 为基类设计圆类 Circle 示例代码: package 实验二; import java.util.Scanner; class Point{//父类Point pri ...

  7. DOM获取元素、修改元素

    ## DOM获取元素.修改元素### 1.DOM#### ①什么是DOM?作用? > DOM是文档对象模型 > 作用:操作网页内容,可以开发网页内容特效和实现用户交互.#### ②DOM对 ...

  8. hdu多校题解

    hdu2020多校-1 J Math is Simple 给定 \(n\) ,求 \[\sum\limits_{1\le a<b\le n \\ gcd(a,b)=1 \\ a+b\ge n} ...

  9. [第18届 科大讯飞杯 J] 能到达吗

    能到达吗 题目链接:牛客5278 J 能到达吗 Description 给定一个 \(n\times m\) 的地图,地图的左上角为 \((1, 1)\) ,右下角为 \((n,m)\). 地图上有 ...

  10. React简单教程-1-组件

    前言 React,Facebook开发的前端框架.当时Facebook对市面上的前端框架都不满意,于是自己捣鼓出了React,使用后觉得特别好用,于是就在2013年开源了. 我也用React开发了一个 ...