首页 > 其他分享 >zip()函数

zip()函数

时间:2024-03-23 23:13:27浏览次数:24  
标签:函数 zip ids lisi names print zhangsan

开始学python啦,第一篇章就以zip()内置函数,这个函数是看生成验证码的时候,竟然可以通过zip实现并行遍历,觉得很神奇,这个这种遍历方式,java还真没有。

python zip是一个非常有用的内建函数,它可以实现并行遍历,也可以将两个或多个列表,转换成一个元组或者字典。具体的通过示例来看下

案例一 将两个列表合成一个元组


ids = [1, 2, 3, 4]
names = ['zhangsan', 'lisi', 'wangwu', 'zhaoliu']
persons = zip(ids, names)
print(list(persons))

运行结果

[(1, 'zhangsan'), (2, 'lisi'), (3, 'wangwu'), (4, 'zhaoliu')]

案例二 将两个列表合成一个字典


# 方式一 通过并行遍历实现
ids = [1, 2, 3, 4]
names = ['zhangsan', 'lisi', 'wangwu', 'zhaoliu']
person_dict = {i:name for i,name in zip(ids,names)}
print(person_dict)
# 方式二 用dict函数将元组列表转换为字典
person_dict_2 = dict(zip(ids, names))
print(person_dict_2)
# {1: 'zhangsan', 2: 'lisi', 3: 'wangwu', 4: 'zhaoliu'}

# 追加
update_ids = [5,6]
update_names = ['tianqi','xiaoxiao']
person_dict_2.update(zip(update_ids,update_names))
print(person_dict_2)
# {1: 'zhangsan', 2: 'lisi', 3: 'wangwu', 4: 'zhaoliu', 5: 'tianqi', 6: 'xiaoxiao'}

案例三、两个集合长度不等,如何组成一个元组或者说字典


# 方式三
ids = [1, 2, 3, 4]
names = ['zhangsan', 'lisi']
persons = zip(ids, names)
print(list(persons))
# [(1, 'zhangsan'), (2, 'lisi')] 

从上面输出来看,zip函数的结果基于最短的可迭代项,所以3,4丢弃了。那我想要保留呢

from itertools import zip_longest

ids = [1, 2, 3, 4]
names = ['zhangsan', 'lisi']
persons = zip_longest(ids, names)
print(list(persons))
# [(1, 'zhangsan'), (2, 'lisi'), (3, None), (4, None)]

# 如果想填充默认值呢
persons = zip_longest(ids, names, fillvalue='xxx')
print(list(persons))
# [(1, 'zhangsan'), (2, 'lisi'), (3, 'xxx'), (4, 'xxx')]

案例四、和案例一相反,将一个元组转换成两个列表


persons = [(1, 'zhangsan'), (2, 'lisi'), (3, 'wangwu'), (4, 'zhaoliu')]
ids, names = zip(*persons)
print(ids)
print(names)

运行结果

(1, 2, 3, 4)
('zhangsan', 'lisi', 'wangwu', 'zhaoliu')

在上面的示例中,星号执行了拆包操作,即从记录列表中拆包所有四个元组


案例五、在for循环中使用zip函数

ids = [1, 2, 3, 4]
names = ['zhangsan', 'lisi', 'wangwu', 'zhaoliu']
sexs = ['男', '男', '女', '女']
for id,name,sex in zip(ids,names,sexs):
    print(f'id={id},名称={name},性别={sex}')

运行结果

id=1,名称=zhangsan,性别=男
id=2,名称=lisi,性别=男
id=3,名称=wangwu,性别=女
id=4,名称=zhaoliu,性别=女    

再举一个例子: 同时遍历多个字典

dict_one = {'name': '小小', 'age': '8', 'sex': '女'}
dict_two = {'name': '西西', 'age': '8', 'sex': '男'}
for (k1, v1), (k2, v2) in zip(dict_one.items(), dict_two.items()):
    print(k1, '->', v1)
    print(k2, '->', v2)

运行结果

name -> 小小
name -> 西西
age -> 8
age -> 8
sex -> 女
sex -> 男

案例六、矩阵转置


matrix = [[1, 2, 3], [4, 5, 6]]
transposed = list(zip(*matrix))
print(transposed)

运行结果

[(1, 4), (2, 5), (3, 6)]

标签:函数,zip,ids,lisi,names,print,zhangsan
From: https://www.cnblogs.com/qdhxhz/p/18085701

相关文章

  • [C#] .NET8增加了Arm架构的多寄存器的查表函数(VectorTableLookup/VectorTableLookupEx
    作者:zyl910发现.NET8增加了Arm架构的多寄存器的查表函数(VectorTableLookup/VectorTableLookupExtension),这给编写SIMD向量化算法带来了方便。一、指令说明在学习Arm的AdvSimd(Neon)指令集时,发现它的Lookup(查表)功能,类似X86的Sse系列指令集中的字节Shuffle(换位。如_mm_shuffle_epi......
  • vue2 在 main.js 中定义全局函数,在二次封装的 api\index.js 中引用全局函数 GPT4 Tur
    在Vue2中,你可以通过Vue的原型系统来定义全局函数,然后在整个应用的任何组件中使用这些函数。同样,你也可以在其他JavaScript文件中使用这些函数,比如你提到的二次封装的API文件。下面是如何实现这一过程的步骤:###第一步:在`main.js`中定义全局函数在Vue项目的入口文件`main.js`中,你......
  • 设备树解析函数
    参考资料:https://www.bilibili.com/video/BV1fJ411i7PB?p=23&vd_source=432ba293ecfc949a4174ab91ccc526d6https://blog.csdn.net/qq_40937426/article/details/107706460https://blog.csdn.net/qq_41709234/article/details/129758010 设备树描述了设备的详细信息,这些信息......
  • Python实战:Lambda函数与匿名函数
    一、引言在Python编程中,Lambda函数和匿名函数是两种特殊的函数定义方式,它们可以提高代码的简洁性和可读性。Lambda函数和匿名函数通常用于简单的函数表达式,如数据处理和函数式编程。本文将详细介绍Python中的Lambda函数与匿名函数,并通过具体代码示例展示它们的应用。二、L......
  • C++ 三角函数
    文章目录一、题目描述三角函数题目描述输入格式输出格式样例#1样例输入#1样例输出#1提示二、参考代码一、题目描述三角函数题目描述输入一组勾股数a,b......
  • Day 15(操作符)赋值+单目+关系+逻辑+条件+逗号表达式+下标引用+函数调用
    1.赋值操作符:=   复合赋值符:+=         -=       *=       /=     &=      |=     ^=       %=    >>=    <<=eg: a=a+2→a+=2  a=a>>1→a>>=1连续赋值:a=b=c(从右向左运行)(不推荐此方法)2......
  • 【Python学习】——函数进阶
    零、函数基础在之前的文章里:【Python学习】——基础语法一、多返回值deftest_return():    return1,2x,y=test_return()print(x) #结果1print(y) #结果2按照返回值的顺序,写对应顺序的多个变量接受即可变量之间用逗号隔开支持不同类型的数据return......
  • 用函数和数组实现扫雷游戏(从0开始)
    文章目录概要整体架构流程(这里用VS2023来制作)代码实现小结概要学完数组和函数后我们可以通过所学知识写一个扫雷游戏,并实现一些拓展功能。我们采用多文件联调的模式来制作,这里需要先建好三个文件game.hgame.cminesweeper.c整体架构流程(这里用VS2023来制作)在......
  • 【python】写一个从指定路径读取xlsx的函数
    定义了一个名为read_xlsx的函数,从指定的路径(如果提供了路径)读取一个Excel文件并将其内容转换为pandas的DataFrame对象。#-*-coding:utf-8-*-#@Author:author_name#@Time:2024/3/2018:00importpandasaspddefread_xlsx(file_name,pat......
  • 生成函数与多项式
    1.生成函数1.1普通型生成函数OGF1.1.1基础序列\(\{f_i\}_{i=0}^n\)的普通型生成函数是\(F(x)=\sum_{i=0}^nf_ix^i\)。\(n\)可以等于\(\infty\)。有一些常用的运算规则需要记住:\[F(x)+G(x)=H(x)\iffh_n=f_n+g_n\]\[F(x)G(x)=H(x)\iffh_n=\sum_{i=......