为了账号安全,请及时绑定邮箱和手机立即绑定

请问为什么如下不能执行?

如下 m=l 的时候不能执行
l = ['Adam', 'Lisa', 'Bart', 'Paul']
m = l
for name in l:
    y=name.lower()
    m.append(y)


s = set (m)

print 'adam' in s
print 'bart' in s

但是将m=l换成 m=['Adam', 'Lisa', 'Bart', 'Paul']就可以了?


l = ['Adam', 'Lisa', 'Bart', 'Paul']
m = ['Adam', 'Lisa', 'Bart', 'Paul']
for name in l:
    y=name.lower()
    m.append(y)


s = set (m)

print 'adam' in s
print 'bart' in s


正在回答

3 回答

s = set(['Adam', 'adam', 'Lisa', 'lisa', 'Bart', 'bart', 'Paul', 'paul'])print 'adam' in s
print 'bart' in s


0 回复 有任何疑惑可以回复我~

l类型为list时  赋值给其他变量是引用传递,引用传递传的是地址,所以你不管操作l还是m  实际都是操作一片内存区域。int  string 为值类型传递,所以赋值后 新变量与原变量互不干扰。

1 回复 有任何疑惑可以回复我~

http://img1.sycdn.imooc.com//5e45fab50001262e14401080.jpg

L和m指向同一个内存区域,往m里append 等于往 L 里 append,所以 for循环无法退出,执行一次for,就会再次添加,形成死循环。

1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
初识Python
  • 参与学习       758625    人
  • 解答问题       8667    个

学python入门视频教程,让你快速入门并能编写简单的Python程序

进入课程

请问为什么如下不能执行?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信