我想通过在每个项目之后放置“伟大”来覆盖“魔术师”列表。
如果我使用pop()将新项目分配到新列表,将旧项目设置为空,然后将新名称附加回去,则该方法将起作用。

码:

for great in greatlist:
    mages.append(great)


但是,为什么不简单地将其复制工作呢?结果是一个空的“魔法”列表。

mages=greatlist[:]


这里是整个代码:

magicians=['feka','kuka','szuka']
#puts 'the Great' after every list element name
def make_great(mages):
    greatlist=[]
    while mages:
        uj=mages.pop()
        greatlist.append(uj + ", the Great")
#    for great in greatlist:
#        mages.append(great)
    mages=greatlist[:]

最佳答案

问题是您正在尝试重新分配mages。这在python中是错误的,因为变量不是容器,但您必须将它们视为标签:

magicians=['feka','kuka','szuka']

#puts 'the Great' after every list element name
def make_great(mages):
    greatlist=[]
    while mages:
        uj=mages.pop()
        greatlist.append(uj + ", the Great")
    return greatlist # return the resulting list

magicians = make_great(magicians) #reassign magicians labelling to the new list from function


请注意作用域greatlist位于函数内部,因此一旦函数完成,所有不在其上或返回的所有内容都将被丢弃。

10-06 01:13