鱼C论坛

 找回密码
 立即注册
查看: 576|回复: 4

哥哥,下面这个有点看不懂,求解答,摸摸哒

[复制链接]
发表于 2020-4-6 14:33:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
>>> list(map(lambda x, y:[x, y],[1, 3, 5, 7, 9],[2, 4, 6, 8, 10]))
[[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]]
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-4-6 14:43:49 | 显示全部楼层
两个列表[1, 3, 5, 7, 9]和[2, 4, 6, 8, 10].

lanmbda两个变量x和y。以[x,y]输出。

map做一一映射。

输出:[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-6 14:46:04 | 显示全部楼层
等价于
  1. lst=[]
  2. lst1=[1,3,5,7,9]
  3. lst2=[2,4,6,8,10]
  4. for i in range(len(lst1)):
  5.     lst.append((lst1[i],lst2[i]))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-6 14:48:04 | 显示全部楼层
原本是这样的:
>>> list(map(lambda x, y:[x, y],[1, 3, 5, 7, 9],[2, 4, 6, 8, 10]))
[[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]]

反着推理

分开看,
list()   最外层 是 【】,就把他去掉

那就相当于 map(lambda x, y:[x, y],[1, 3, 5, 7, 9],[2, 4, 6, 8, 10])
等于
[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]

然后搞清楚map()函数的用法:
百度有解释,https://www.runoob.com/python/python-func-map.html
语法:map(function, iterable, ...)
参数:iterable -- 一个或多个序列

举个例子:
# 提供了两个列表,对相同位置的列表数据进行相加
>>> map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])
[3, 7, 11, 15, 19]

因此:你这个匿名函数的 lambda x,y:[x, y]  其中的 [x,y]   只是他的一个值(一个元素)

后面的两个序列[1, 3, 5, 7, 9],[2, 4, 6, 8, 10]
组合成[x,y]的形式:
那就是
[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-6 17:21:39 | 显示全部楼层
将 [1, 3, 5, 7, 9] 和 [2, 4, 6, 8, 10] 的每一个元素都做一遍 [x, y] 的操作,相当于:

  1. list1 = [1, 3, 5, 7, 9]
  2. list2 = [2, 4, 6, 8, 10]
  3. list3 = []
  4. for i in range(len(list1)):
  5.     list3.append([list1[i], list2[i]])
  6. print(list3)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-22 00:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表