函数中的Python复制列表

2024-06-11 14:51:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我想覆盖'魔术师'名单,把'伟大'后,每个项目。 如果我使用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[:]

Tags: the项目代码in列表forpop名单
3条回答

问题是您正在尝试重新分配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位于函数内部,因此一旦函数完成,它上的所有非全局的或返回的内容都将被分解。你知道吗

或者也可以使用list()函数

mages = list(greatlist)

这将把greatlist的副本放入mages

你可以试试这个

In [22]: magicians=['feka','kuka','szuka']

In [23]: def make_great(mages):
    ...:     mages = ['{}, the Great'.format(i) for i in mages]
   ....:.    return mages
    ...: 

In [25]: magicians = make_great(magicians)
#  ['feka, the Great', 'kuka, the Great', 'szuka, the Great']

相关问题 更多 >