找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 2234|回复: 4

[求助] python从入门到时实践,8单元第10题,求助1

4

主题

7

帖子

7

积分

贫民

积分
7
mothecoolest 发表于 2019-7-24 12:35:46 | 显示全部楼层 |阅读模式
def make_great(names):
    """add the great to magician's name"""
    for name in names:
        great = ['The great '+name]
    return great
names = ['Bob','Liu','lun']
great_magicians = make_great(names)
for name in great_magicians:
print (name)


返回列表后只有单一的"lun"回来了,其他的都丢失了。。怎么办呢 看了好久都没法解决

回复

使用道具 举报

0

主题

956

帖子

956

积分

圣骑士

积分
956
sheeboard 发表于 2019-7-24 16:37:59 | 显示全部楼层
本帖最后由 sheeboard 于 2019-7-24 16:47 编辑

def make_great(names):
         great=['The great '+name for name in names]
        return great
回复 支持 反对

使用道具 举报

0

主题

34

帖子

34

积分

贫民

积分
34
一叶落而知秋 发表于 2019-7-25 08:40:44 | 显示全部楼层
这个问题是因为,在进行列表创建的时候,内存里会重新开辟地址空间,换句话说great会不停的指向新创建的列表。
解决方法:使用append方法
回复 支持 反对

使用道具 举报

4

主题

7

帖子

7

积分

贫民

积分
7
mothecoolest  楼主| 发表于 2019-7-25 12:45:40 | 显示全部楼层
一叶落而知秋 发表于 2019-7-25 08:40
这个问题是因为,在进行列表创建的时候,内存里会重新开辟地址空间,换句话说great会不停的指向新创建的列 ...

谢谢!!! 终于明白了,相当于for loop里每次great都会重新生成一个列表覆盖掉原来的是吧!
回复 支持 反对

使用道具 举报

4

主题

7

帖子

7

积分

贫民

积分
7
mothecoolest  楼主| 发表于 2019-7-25 18:50:28 | 显示全部楼层
sheeboard 发表于 2019-7-24 16:37
def make_great(names):
         great=['The great '+name for name in names]
        return great

谢谢!字数字数字数
回复 支持 反对

使用道具 举报

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

本版积分规则

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