ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python 中 map() zip() list() 函数的介绍

2022-07-22 18:06:49  阅读:202  来源: 互联网

标签:map zip Python list m1 print data1 iterable


map()

map(function , iterable, ....) : 依次将函数function作用在可迭代的list上,并返回对应的函数返回值,组成新的list(python 2.x) 或者迭代器(python 3.x)。

注意:map() 并不会改变iterable 而是会产生一个新的iterable,且iterable 中的元素可以式任意的类型,只要function可以处理这个类型即可。当具有多个iterable时,是表明其分别是function的参数,而不是说分别作用在各个iterable 上并返回结果。如果iterable的个数和function的个数对不上,则会报错。

def fun1(x):
    return x * x
def fun2(x, y):
    return x * y
data1 = [1,2,3]
data2 = [4,5,6]
m1 = map(fun1, data1)	# fun1 只有一个参数,如果输入多个data则会报错
print(m1)				# python 3.x 返回的是 迭代器
print(list(m1))			# 迭代器转换为list	

m2 = map(fun2, data1, data2)	# data1 和 data2 分别是fun2的两个可迭代的参数
print(m2)			
print(list(m2))	

>> <map object at 0x7f95c7b72290>
>> [1, 4, 9]

>><map object at 0x7fe3a7591290>
[4, 10, 18]

zip()

zip(iterable,...) : 将各个iterable中的对应的各个元素组合成元组形式,并返回列表(python 2.x) 或者zip对象/元组迭代器(python 3.x),即可以通过next方法获取迭代器的下一个元素。

注意: zip() 不会改变原来的iterable,而是会产生新的值;当各个iterable的长度不一致时,以最短长度为标准,大于最短长度的元素将不会被组合进元组中;iterable可以是各种类型,列表,元组,字典,集合,字符串等都是可以的;利用 ***** 号操作符,也可以将元组解压。

data1 = [1,2,3]
data2 = [4,5,6,7,8]
m1 = zip(data1, data2)

print(m1)
print(list(m1))
print(*m1)			# 解压zip,和上面的list()有点类似的功能

>> <zip object at 0x7fcffad42410>
>> [(1, 4), (2, 5), (3, 6)]
>> (1, 4), (2, 5), (3, 6)

list()

list( ) : 将 字符串,列表,元组,字典等转化为列表

data1 = "hello world"
data2 = ("1",2,3)
data3 = {"a":1,"b":2}
print(list(data1))
print(list(data2))
print(list(data3))			# 转换字典的key
print(list(data3.values()))	# 转换字典的value

>> ['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']
>> ['1', 2, 3]
>> ['a', 'b']
>> [1, 2]https://www.runoob.com/python/att-list-list.html)

标签:map,zip,Python,list,m1,print,data1,iterable
来源: https://www.cnblogs.com/jack-nie-23/p/16506576.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有