鱼C论坛

 找回密码
 立即注册
查看: 1512|回复: 19

[已解决]012讲的课后题

[复制链接]
发表于 2017-11-9 11:10:56 | 显示全部楼层 |阅读模式

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

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

x
第0题
>>> old = [1,2,3,4,5]
>>> new = old
>>> old = [6]
>>> print(new)
[1, 2, 3, 4, 5]
为什么会打印[1,2,3,4,5]

还有为什么打印出来是
>>> range(10)
range(0, 10)
而不是
>>>range(10)        # 从 0 开始到 10
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
怎样打印出来

初学求讲解,谢谢!
最佳答案
2017-11-9 21:02:33
史莱克 发表于 2017-11-9 18:13
>> list(range(11))
Traceback (most recent call last):
  File "", line 1, in

扯淡。
重启一下idle。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-11-9 11:20:47 From FishC Mobile | 显示全部楼层
python中变量名只是一个标签,直接赋值只是给数据添加一个标签,所以其中一个标签变了不会影响另外一个
计数都是从0开始的而且只取到右边界减1的值
所以用range(11)就可以得到0-10的列表
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-9 11:24:12 | 显示全部楼层
你的第一个问题
简单的说就是为什么你new=old后,再给old赋值,new和old不相等。
解释
old=[6]这一句相当于是重新给old分配了,对象已经改变了。但是new还是指向的是old原来的那个对象。
变通
如果你old改成
old.append(6)
你输入new的话,结果会是
[1,2,3,4,5,6]
这是因为对象没有被改变。所以两者结果会是相同的。

你的第二个问题没看懂你想问啥
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-9 11:34:49 | 显示全部楼层
康小泡 发表于 2017-11-9 11:24
你的第一个问题
简单的说就是为什么你new=old后,再给old赋值,new和old不相等。
解释

第一个明白了,
第二个 为什么>>> range(10)打印出来是
range(0, 10)
而不是[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-9 11:35:24 | 显示全部楼层
BngThea 发表于 2017-11-9 11:20
python中变量名只是一个标签,直接赋值只是给数据添加一个标签,所以其中一个标签变了不会影响另外一个
计 ...

谢谢,我明白了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-9 11:41:18 | 显示全部楼层
BngThea 发表于 2017-11-9 11:20
python中变量名只是一个标签,直接赋值只是给数据添加一个标签,所以其中一个标签变了不会影响另外一个
计 ...

>>> range(11)
range(0, 11)
怎样才能出来的是一个列表
和版本有关系吗
我用的是3.7.0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-9 11:55:14 From FishC Mobile | 显示全部楼层
史莱克 发表于 2017-11-9 11:41
>>> range(11)
range(0, 11)
怎样才能出来的是一个列表

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

使用道具 举报

 楼主| 发表于 2017-11-9 12:21:05 | 显示全部楼层

>>> print(range(11))
range(0, 11)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-9 12:57:08 From FishC Mobile | 显示全部楼层
史莱克 发表于 2017-11-9 12:21
>>> print(range(11))
range(0, 11)

那试试a=range(11)
print(a)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-9 13:00:53 | 显示全部楼层
BngThea 发表于 2017-11-9 12:57
那试试a=range(11)
print(a)

>>> a = range(11)
>>> print(a)
range(0, 11)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-9 13:03:49 From FishC Mobile | 显示全部楼层
史莱克 发表于 2017-11-9 13:00
>>> a = range(11)
>>> print(a)
range(0, 11)

看来需要进行一下强制转换
print(list(range(11)))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-9 14:18:32 | 显示全部楼层
史莱克 发表于 2017-11-9 11:34
第一个明白了,
第二个 为什么>>> range(10)打印出来是
range(0, 10)

版本问题,你list(range(10))就可以了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-9 17:36:38 | 显示全部楼层
康小泡 发表于 2017-11-9 14:18
版本问题,你list(range(10))就可以了。

>>> list(range(10))
Traceback (most recent call last):
  File "<pyshell#117>", line 1, in <module>
    list(range(10))
TypeError: 'list' object is not callable
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-9 17:37:12 | 显示全部楼层
BngThea 发表于 2017-11-9 13:03
看来需要进行一下强制转换
print(list(range(11)))

print(list(range(10)))
Traceback (most recent call last):
  File "<pyshell#114>", line 1, in <module>
    print(list(range(10)))
TypeError: 'list' object is not callable
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-9 17:57:03 | 显示全部楼层
史莱克 发表于 2017-11-9 11:41
>>> range(11)
range(0, 11)
怎样才能出来的是一个列表
  1. list(range(11))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-9 18:13:36 | 显示全部楼层

>> list(range(11))
Traceback (most recent call last):
  File "<pyshell#118>", line 1, in <module>
    list(range(11))
TypeError: 'list' object is not callable
>>> 我用的是3.7.0版本
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-9 18:58:52 | 显示全部楼层
微信截图_20171109185820.png

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

使用道具 举报

发表于 2017-11-9 19:37:48 | 显示全部楼层
range(10) 和range(0,10) 这俩其实是一个意思。range() 只是表示一个范围,你必须用其他命令才能返回值,比如 列表list(range(10)) 或者元组 tuple(range(10)) 下面这种也可以。
  1. a=range(10)
  2. for i in a:
  3.     print(i)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-9 21:02:33 | 显示全部楼层    本楼为最佳答案   
史莱克 发表于 2017-11-9 18:13
>> list(range(11))
Traceback (most recent call last):
  File "", line 1, in

扯淡。
重启一下idle。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-10 21:58:02 | 显示全部楼层
康小泡 发表于 2017-11-9 11:24
你的第一个问题
简单的说就是为什么你new=old后,再给old赋值,new和old不相等。
解释

努力理解第一个问题……
感觉还是没太看懂,要回去再看下视频QAQ
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-28 17:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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