Python中zip()与zip(*)的用法
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(*)的用法的更多相关文章
- 简单说明Python中的装饰器的用法
简单说明Python中的装饰器的用法 这篇文章主要简单说明了Python中的装饰器的用法,装饰器在Python的进阶学习中非常重要,示例代码基于Python2.x,需要的朋友可以参考下 装饰器对与 ...
- Python中【__all__】的用法
Python中[__all__]的用法 转:http://python-china.org/t/725 用 __all__ 暴露接口 Python 可以在模块级别暴露接口: __all__ = [&q ...
- python中enumerate()函数用法
python中enumerate()函数用法 先出一个题目:1.有一 list= [1, 2, 3, 4, 5, 6] 请打印输出:0, 1 1, 2 2, 3 3, 4 4, 5 5, 6 打印输 ...
- Python中try...except...else的用法
Python中try...except...else的用法: try: <语句>except <name>: <语句> #如果在try ...
- Python中logging模块的基本用法
在 PyCon 2018 上,Mario Corchero 介绍了在开发过程中如何更方便轻松地记录日志的流程. 整个演讲的内容包括: 为什么日志记录非常重要 日志记录的流程是怎样的 怎样来进行日志记录 ...
- (转)Python中的split()函数的用法
Python中的split()函数的用法 原文:https://www.cnblogs.com/hjhsysu/p/5700347.html Python中有split()和os.path.split ...
- python中的随机函数random的用法示例
python中的随机函数random的用法示例 一.random模块简介 Python标准库中的random函数,可以生成随机浮点数.整数.字符串,甚至帮助你随机选择列表序列中的一个元素,打乱一组数据 ...
- 详解Python中的循环语句的用法
一.简介 Python的条件和循环语句,决定了程序的控制流程,体现结构的多样性.须重要理解,if.while.for以及与它们相搭配的 else. elif.break.continue和pass语句 ...
- 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, ...
- python中的formatter的详细用法
今天抽空学习了一下python中的string service中的formatter的相关用法,主要是为了让自己的代码看起来更加和谐,因为很多java或者c语言过来的开发者都不怎么爱使用python的 ...
随机推荐
- 洛谷P1540 机器翻译 水题 模拟
注意一下细节,尤其是更新minv时不要更新错. Code: #include<vector> #include<iostream> #include<cstdio> ...
- 路飞学城Python-Day180
部署作业 [pythonanywhere]
- PowerDesigner工具
PowerDesigner是一款数据库设计与建模工具,开发人员可以在上面设计表结构,而不用一开始就创建数据库中的表,因为设计阶段数据库表结构会经常变动.设计完后可以导出创建所有表的SQL脚本,直接执行 ...
- BFS与DFS模板
搜索问题的解法 DFS(深度优先搜索) BFS(广度优先搜索) backtracking(回溯) DFS模板 void dfs(...) { // 结束递归的条件 if (...) { ..... / ...
- 酒店管理系统(功能结构图、E-R图、用例图)
功能结构图 用例图 状态图 流程图 数据字典 er图
- JavaScript之this释疑
近期进修JavaScript,看了"You Don't Know JS"这本书,认为是本JavaScript内功上乘心法,有一定JavaScript基础朋友一定要看看(不推荐入门小 ...
- hadoop分布式架构和设计
引言 Hadoop分布式文件系统(HDFS)被设计成适合执行在通用硬件(commodity hardware)上的分布式文件系统.它和现有的分布式文件系统有非常多共同点.但同一时候,它和其它的分布式文 ...
- Hive不同文件的读取与序列化
Hive不同文件的读取对照 stored as textfile 直接查看hdfs hadoop fs -text hive> create table test_txt(name string ...
- 利用POI操作不同版本号word文档中的图片以及创建word文档
我们都知道要想利用java对office操作最经常使用的技术就应该是POI了,在这里本人就不多说到底POI是什么和怎么用了. 先说本人遇到的问题,不同于利用POI去向word文档以及excel文档去写 ...
- java里面包的重要性-管理类文件
包的必要性 包是用来给java源文件分门别类的,java中一个包在windows下就是一个文件夹.包的全限定名是从根文件夹開始的(\src文件夹)以点号作为分隔符,包名和包名之间使用点号隔开,java ...