鱼C论坛

 找回密码
 立即注册
查看: 1245|回复: 12

[已解决]python的这个‘*’,求解释

[复制链接]
发表于 2018-3-19 19:51:40 | 显示全部楼层 |阅读模式

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

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

x
我知道形参中的*,表示收集参数,但是下面这个求解释
  1. a = [1,3,5,7,9]
  2. print(*(i+1 for i in a))
复制代码

*在这个生成器前面好像是把生成器的每个值都取出来一起交给print,但*(i+1 for i in a)又不是元组,列表;
那他是什么呢?求解释?(难道也是收集参数)
最佳答案
2018-3-19 21:54:03
塔利班 发表于 2018-3-19 21:47
加了其实也不是就是返回元祖,因为打印效果不一样

确实,*(i+1 for i in a) 可迭代的序列 序列解包
可以这样 [*(i+1 for i in a)] 得到列表
但又不能(*(i+1 for i in a)) 得到元组,如果要实现元组 还得tuple([*(i+1 for i in a)])
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-3-19 19:59:28 | 显示全部楼层
(i+1 for i in a) 假设等于 (1,2,3,4,5,6)
这不是元组是什么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-19 20:02:43 | 显示全部楼层
ba21 发表于 2018-3-19 19:59
(i+1 for i in a) 假设等于 (1,2,3,4,5,6)
这不是元组是什么?

是生成器
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-19 20:07:10 | 显示全部楼层
是表示可迭代对象的每一个元素取出来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-19 20:10:32 | 显示全部楼层

我觉得你是来搞笑的吧。

若不 能生成结果,要生成器何用。
你要答的话,应该这么说吧
这是生成器,最终返回一个可迭代的序列(这里返回 元组)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-19 20:18:50 | 显示全部楼层
一个星号代表是数组,两个是字典
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-19 20:24:41 | 显示全部楼层
解包了解一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-19 21:03:18 | 显示全部楼层
ba21 发表于 2018-3-19 20:10
我觉得你是来搞笑的吧。

若不 能生成结果,要生成器何用。

抱歉你才是搞笑的吧,你发的没*
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-19 21:15:45 | 显示全部楼层
塔利班 发表于 2018-3-19 21:03
抱歉你才是搞笑的吧,你发的没*

不好意思,没加*了。。。。
意思一样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-19 21:47:44 | 显示全部楼层
ba21 发表于 2018-3-19 21:15
不好意思,没加*了。。。。
意思一样

加了其实也不是就是返回元祖,因为打印效果不一样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-19 21:54:03 | 显示全部楼层    本楼为最佳答案   
塔利班 发表于 2018-3-19 21:47
加了其实也不是就是返回元祖,因为打印效果不一样

确实,*(i+1 for i in a) 可迭代的序列 序列解包
可以这样 [*(i+1 for i in a)] 得到列表
但又不能(*(i+1 for i in a)) 得到元组,如果要实现元组 还得tuple([*(i+1 for i in a)])
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-19 22:26:44 | 显示全部楼层
ba21 发表于 2018-3-19 21:54
确实,*(i+1 for i in a) 可迭代的序列 序列解包
可以这样 [*(i+1 for i in a)] 得到列表
但又不能(*( ...

大概是这个意思,谢谢啦。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-20 18:57:35 | 显示全部楼层
  1. print('太水了!!!!')
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 07:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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