Python中zip()与zip(*)的用法

可以看成是zip()为压缩,zip(*)是解压

zip()

  • 返回一个以元祖为元素的列表[()],每一个元祖的元素都是取自参数序列的

  • 返回的列表长度是被压缩为最短的参数序列的长度,只是一个参数序列时,它返回一个1元祖的列表。没有参数时,返回一个空的列表。

    l1 = ['a', 'b']
    l2 = ['c', 'd']
    l3 = list(zip(l1, l2))
    print(l3)

    [('a', 'c'), ('b', 'd')]

    当参数长度不同的时候

    l1 = ["a", 'b',"esdasda"]
    l2 = ['c', 'd']
    l3 = list(zip(l1, l2))
    print(l3)

    [('a', 'c'), ('b', 'd')]

    当只有一个参数的时候

    l1 = ["a", 'b',"esdasda"]
    l3 = list(zip(l1))
    print(l3)

    [('a',), ('b',), ('esdasda',)]

    没有参数的时候

    ​```python
    l1 = []
    l3 = list(zip(l1))
    print(l3)

    []

zip(*)

  • 解包

  • 返回的每一个都是元祖类型,而并非是原来的数据类型

l1 = ['a', 'b']

l2 = ['c', 'd']

l3 = list(zip(l1, l2))

l4, l5 = list(zip(*l3))

print(l4)

print(l5)

print(type(l4))

```

('a', 'b')
('c', 'd')
<class 'tuple'>
  • 如果返回的参数只有一个,则会再打包放到一个列表中

    l1 = ['a', 'b']
    l2 = ['c', 'd']
    l3 = list(zip(l1, l2))
    l4 = list(zip(*l3))
    print(l4)
    print(type(l4))

    [('a', 'b'), ('c', 'd')]

    <class 'list'>

  • 如果返回的参数值与l3本身的元素个数不同,且不为1时,无法解包

    l1 = ['a', 'b']
    l2 = ['c', 'd']
    l6 = ['e', 'f']
    l3 = list(zip(l1, l2, l6))
    l4, l5 = list(zip(*l3))
    print(l4)
    print(type(l4))

    Traceback (most recent call last):

    File "M:/Python基础/leetcode/draft.py", line 5, in

    l4, l5 = list(zip(*l3))

    ValueError: too many values to unpack (expected 2)

知识点来自leetcode最长公共前缀

  • 题目:编写一个函数来查找字符串数组中的最长公共前缀。

    ​ 如果不存在公共前缀,返回空字符串 ""

    示例 1:

    输入: ["flower","flow","flight"]
    输出: "fl"

    示例 2:

    输入: ["dog","racecar","car"]
    输出: ""
    解释: 输入不存在公共前缀。

    说明:

    所有输入只包含小写字母 a-z

  • 还没有学到函数,所以代码未使用函数,若要放入leetcode中,将x的定义删除,print换成return即可

  • 以下为代码解析

    strs = ["flower", "flow", "flight"]
    strs_z = list(zip(*strs)) # 把strs解包,将不同元素的同一索引值放入一个个元祖中,再打包成list
    s = "" for i in strs_z:
    i = set(i) # 利用集合的唯一性
    if len(i) == 1:
    i = str(i)
    s += i[2] # 这样得到的i才会不带{}
    else:
    break
    print(s)

    fl

Python中zip()与zip(*)的用法的更多相关文章

  1. 简单说明Python中的装饰器的用法

    简单说明Python中的装饰器的用法 这篇文章主要简单说明了Python中的装饰器的用法,装饰器在Python的进阶学习中非常重要,示例代码基于Python2.x,需要的朋友可以参考下   装饰器对与 ...

  2. Python中【__all__】的用法

    Python中[__all__]的用法 转:http://python-china.org/t/725 用 __all__ 暴露接口 Python 可以在模块级别暴露接口: __all__ = [&q ...

  3. python中enumerate()函数用法

    python中enumerate()函数用法 先出一个题目:1.有一 list= [1, 2, 3, 4, 5, 6]  请打印输出:0, 1 1, 2 2, 3 3, 4 4, 5 5, 6 打印输 ...

  4. Python中try...except...else的用法

    Python中try...except...else的用法: try:    <语句>except <name>:    <语句>          #如果在try ...

  5. Python中logging模块的基本用法

    在 PyCon 2018 上,Mario Corchero 介绍了在开发过程中如何更方便轻松地记录日志的流程. 整个演讲的内容包括: 为什么日志记录非常重要 日志记录的流程是怎样的 怎样来进行日志记录 ...

  6. (转)Python中的split()函数的用法

    Python中的split()函数的用法 原文:https://www.cnblogs.com/hjhsysu/p/5700347.html Python中有split()和os.path.split ...

  7. python中的随机函数random的用法示例

    python中的随机函数random的用法示例 一.random模块简介 Python标准库中的random函数,可以生成随机浮点数.整数.字符串,甚至帮助你随机选择列表序列中的一个元素,打乱一组数据 ...

  8. 详解Python中的循环语句的用法

    一.简介 Python的条件和循环语句,决定了程序的控制流程,体现结构的多样性.须重要理解,if.while.for以及与它们相搭配的 else. elif.break.continue和pass语句 ...

  9. python中enumerate()的用法

    先出一个题目:1.有一 list= [1, 2, 3, 4, 5, 6]  请打印输出:0, 1 1, 2 2, 3 3, 4 4, 5 5, 6 打印输出, 2.将 list 倒序成 [6, 5, ...

  10. python中的formatter的详细用法

    今天抽空学习了一下python中的string service中的formatter的相关用法,主要是为了让自己的代码看起来更加和谐,因为很多java或者c语言过来的开发者都不怎么爱使用python的 ...

随机推荐

  1. windows端口被占用解决办法

    1.查找端口 netstat -ano | findstr 端口号 2.进程列表并查找相应的进程 tasklist |findstr 进程号 3.杀死进程 taskkill /f /t /im 进程名 ...

  2. JS中增加日期格式化原型函数之prototype

    /** * javascript Date format(js日期格式化) * 对Date的扩展,将 Date 转化为指定格式的String 月(M).日(d).小时(h).分(m).秒(s).季度( ...

  3. JTextArea+JScrollPane滚动条自动在最下边(转帖)

    这是我制作五子棋的过程中遇到的问题,在网上搜了好几种答案,分别列在下面了.不过感觉第一种相当方便.用得简洁,爽! 1. 利用JTextArea的selectAll();方法在添加信息之后强制将光标移动 ...

  4. fork() 函数解析

    转载自http://blog.csdn.net/jason314/article/details/5640969  一.fork入门知识 一个进程,包括代码.数据和分配给进程的资源.fork()函数通 ...

  5. HTML常用标签简介及快速入门

    此HTML常用标签简介编写的目的,是给一个经常使用网页编辑器的一个朋友提供一个快速熟悉和入门HTML的途径. 现在分享出来,给其他有类似需求的朋友,此处只列出了编辑文章时最常用和遇到的标签,完整标签页 ...

  6. phthon中的open函数模式

    原文地址:http://www.runoob.com/python/python-func-open.html r 以只读方式打开文件.文件的指针将会放在文件的开头.这是默认模式. rb 以二进制格式 ...

  7. vue-cli3.0 搭建项目

    1.首先我们先在安装好node   node用于npm安装[自行百度] 2.全局安装vue 通过npm命令安装vue.js 在用vue.js在用于构建大型的应用时推荐使用npm安装,npm能很好的和w ...

  8. JavaScript(正则表达式一)

    -------------------- 创建正则表达式: 验证匹配的两个方法 //正则表达式测试 /* var p=new RegExp("Box","i") ...

  9. js里写html代码 啥时候要用“\"转义

    当去掉\的时候 字体变黑 需要加\

  10. [using_microsoft_infopath_2010]Chapter 14高级话题

    本章提要: 1.剖析表单逻辑 2.从多个表单中合并数据 3.重新连接XML表单到XSN模板文件 4.在repeating table中设置默认值 5.离线填写表单的权衡