题目是这样的,创建两个函数:show_magicians和make_great,分别用于展示魔术师列表和在每个魔术师名称前面加上great。
列表magicians包含三个姓名
在for循环中到底使用for magician in magicians:还是使用for magician in magicians[:]:
上图:
问题二,虽然用到了for magician in magicians[:]:但for循环内的内容并没有用到magician,也就是说这个for语句实际上代表magician='liuqian',magician='derek.zhao',和magician='dylan'三种情况,每种情况下,都用pop()提取出magicians最后一项,把这项拿出来加上'great'再加回magicians列表,三种情况每次都是提取出最后一项加内容再放回去,导致print就把最后个dylan加great弄了三次
第一个问题 magicians[:]是取magicians内所有元素的,最开始for magician in magicians[:],已经把magicians里的三个元素取出来了,也就相当于for magician in ['liuqian','derek.zhao','dylan']了,元素是不会随着magicians列表的变化而增多的
而for magician in magicians,因为循环中不断往magicians这个列表中添加元素,magicians元素不断增多,导致无限跳不出for循环了