鱼C论坛

 找回密码
 立即注册
查看: 2526|回复: 14

[已解决]a,b,c=0,0,0 不可简化为 a,b,c=0?

[复制链接]
发表于 2022-9-18 23:16:28 | 显示全部楼层 |阅读模式

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

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

x
因为我以为 x,y,z = z,x,y没错所以↓


a,b,c=0,0,0   不可简化为 a,b,c=0?

报错TypeError: 'int' object is not iterable


当我输入a,b,c=0,python以为我干了什么坏事??
最佳答案
2022-9-19 11:51:29

Python 要将 右边的数据依次赋值给左边的变量名,从报错中可以看出,底层应该是使用迭代器来进行依次赋值的

所以你右边的数据需要的是一个可迭代的对象,而 int 类型数据不可迭代,所以抛出了 TypeError: 'int' object is not iterable

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-9-18 23:24:34 | 显示全部楼层
为什么不用a=b=c=0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-18 23:25:48 | 显示全部楼层

对哦
这方法我今天还写过

但那为啥a,b,c=0出错? 给我的感觉python没那么多规规矩矩,咋写都可以
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-19 00:09:24 | 显示全部楼层
因为这个不是matlab呀,而且a=b=c=0和a,b,c=0,0,0    结果也不一样,前一个会导致abc用同一个内存地址
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-19 06:39:15 From FishC Mobile | 显示全部楼层
a,b,c这是一个三元组在给它赋值为0时,会尝试把0转成一个三元组,所以会报错,整型数字不可迭代
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-19 06:59:27 | 显示全部楼层
推荐:a, b, c=0, 0, 0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-19 07:00:58 | 显示全部楼层
假设你
  1. l = [0, 0, 0]
  2. a, b, c=l
  3. a
  4. 0
  5. b
  6. 0
  7. c
  8. 0
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-19 08:57:29 | 显示全部楼层

为什么不用a=b=c=0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-19 10:54:31 | 显示全部楼层
lassiter 发表于 2022-9-19 00:09
因为这个不是matlab呀,而且a=b=c=0和a,b,c=0,0,0    结果也不一样,前一个会导致abc用同一个内存地址

a=b=c=0 会用同一个内存地址这个我更加不明白了
如果 a=b=c=d是用同一个内存地址,abc挂在d上,这样我还好理解,但a=b=c=0这个0是int吧?也会被挂上?

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

使用道具 举报

 楼主| 发表于 2022-9-19 11:00:52 | 显示全部楼层
wp231957 发表于 2022-9-19 06:39
a,b,c这是一个三元组在给它赋值为0时,会尝试把0转成一个三元组,所以会报错,整型数字不可迭代

我理解整型数字不可迭代
但你说的python试把0转成一个三元组,我就不懂python里面的运行原理了,这个我先记下以后再看能不能弄懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-19 11:51:29 | 显示全部楼层    本楼为最佳答案   

Python 要将 右边的数据依次赋值给左边的变量名,从报错中可以看出,底层应该是使用迭代器来进行依次赋值的

所以你右边的数据需要的是一个可迭代的对象,而 int 类型数据不可迭代,所以抛出了 TypeError: 'int' object is not iterable

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

使用道具 举报

发表于 2022-9-19 22:37:08 | 显示全部楼层
jcpython2 发表于 2022-9-19 10:54
a=b=c=0 会用同一个内存地址这个我更加不明白了
如果 a=b=c=d是用同一个内存地址,abc挂在d上,这样我还 ...

是的,有一个内置函数id(a)可以查看内存地址   ,你可以比较比较
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-20 10:06:53 | 显示全部楼层
lassiter 发表于 2022-9-19 22:37
是的,有一个内置函数id(a)可以查看内存地址   ,你可以比较比较

a = 0
b = 0
a和b不也是同一个内存地址吗 这和怎么赋值没啥区别
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-20 13:18:50 | 显示全部楼层
为什么不用a=b=c=0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-21 21:41:14 | 显示全部楼层

你说的好有道理
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-20 05:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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