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

为什么这样不对呢?列表不是可变的吗?

https://img1.sycdn.imooc.com//5cbe8135000174ed03860161.jpg

为什么name一定要改成set(name)

或者要创建一个空列表

谢谢

正在回答

3 回答

name=['Adam','Bart']

k=0

for i in name:

    k=k+1

    j=i.lower()

    name.append(j)

    if(k==2):

        break

s = set(name)

print 'adam' in s

print 'bart' in s

少了判定条件,循环无法终止


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

_Cecilia_L 提问者

可是for语句不是自动遍历到最后一个停止吗??
2019-05-02 回复 有任何疑惑可以回复我~

因为list里面的元素可以重复,每循环一次,新添一个元素进入list,这样永远循环不完。

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

_Cecilia_L 提问者

明白啦 谢谢~
2019-07-06 回复 有任何疑惑可以回复我~

个人认为是检测标准的问题,该章节需要掌握set的用法,所以会检测输出的s是不是set类型

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

_Cecilia_L 提问者

那这样写本身是没有问题的吗?我在想会不会是因为我已经把name列表里面的元素改了,就不能再append了
2019-04-23 回复 有任何疑惑可以回复我~
#2

white_lie 回复 _Cecilia_L 提问者

写法应该是没问题的,你只不过是将每个字符串的大写字母改为小写然后赋值于j,再将j追加到list变量name中。我当时set中的元素只写了两个也没报错。只能猜测检测条件之一是让s为set型。
2019-04-24 回复 有任何疑惑可以回复我~
#3

_Cecilia_L 提问者 回复 white_lie

可是我在第五行写了s = set(name),这个不能算是set型吗?
2019-04-24 回复 有任何疑惑可以回复我~
#4

white_lie 回复 _Cecilia_L 提问者

抱歉啊,我仔细看了一下,你这问题是死循环吧? 如果name是list,它不会区别重复,append一直在后边添加,所以i会随着name的长度改变一直改。
2019-04-24 回复 有任何疑惑可以回复我~
#5

white_lie 回复 _Cecilia_L 提问者

我稍微改了一下,这样就ok了 name=['Adam','Bart'] for i in name: j=i.lower() if j in name: break name.append(j) s=set(name) print 'adam' in s print 'bart' in s
2019-04-24 回复 有任何疑惑可以回复我~
#6

_Cecilia_L 提问者 回复 white_lie

哈哈 懂了 谢谢~~
2019-06-16 回复 有任何疑惑可以回复我~
查看3条回复

举报

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

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

进入课程

为什么这样不对呢?列表不是可变的吗?

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