使用for循环和函数修改python中的列表项

2024-07-08 15:09:46 发布

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

我正在学习Python:Crash课程,遇到了一个我正在解决的问题,但可能有更好的方法。你知道吗

我正在尝试修改此列表:

magicians = ['Houdini', 'Copperfield', 'Blaine'] 

在列表中的每个项目前添加“The Great”可获得:

magicians = ['The Great Houdini','The Great Copperfield', 'The great Blaine']

书中说我应该使用for循环和函数来完成这个任务,并且应该直接修改列表。我找到了一个丑陋的解决办法,但我希望有更好的办法来解决它。这是我想到的。你知道吗

def make_great(magic):
    """ add 'the great' to a list of magicians"""
    new_magic= []
    for names in magic:
          names = 'the great ' + names 
          new_magic.append(names)

    global magicians
    magicians = new_magic

make_great(magicians)
print(magicians)

谢谢你的帮助!你知道吗


Tags: the列表newformakenamesmagiccrash
3条回答

下面介绍如何使用函数和传统的for循环对原始列表进行修改。你知道吗

要修改原始列表对象,我们可以使用片分配:magic[:] = new_magic。您不应该试图修改全局magicians列表,您需要使用传递给make_great函数的magic列表对象。你知道吗

def make_great(magic):
    """ add 'The great ' to a list of magicians"""
    new_magic = []
    for name in magic:
        new_magic.append('The great ' + name)
    magic[:] = new_magic

magicians = ['Houdini', 'Copperfield', 'Blaine'] 
make_great(magicians)
print(magicians)

输出

['The great Houdini', 'The great Copperfield', 'The great Blaine']

通过使用列表理解,我们可以使函数更加紧凑(并且效率略高)。你知道吗

def make_great(magic):
    """ add 'The great ' to a list of magicians"""
    magic[:] = ['The great ' + name for name in magic]

这个怎么样?你知道吗

magicians = ['Houdini', 'Copperfield', 'Blaine'] 
print(['The Great ' + x for x in magicians])

输出:

['The Great Houdini', 'The Great Copperfield', 'The Great Blaine']

您有三个要求:1)直接修改原始列表,2)使用函数,3)使用for循环。这是一个技术性问题,但与前面的答案不同,下面的方法不会首先创建一个新的列表,而是选择更新原始列表中的每个项目本身。因此,以下是如何满足所有要求:

def prefixNames(alist):
    for i,name in enumerate(alist):
        alist[i] = " ".join(("The Great", name))
# example:
magicians = ['Houdini', 'Copperfield', 'Blaine']
prefixNames(magicians)
print(magicians)
['The Great Houdini', 'The Great Copperfield', 'The Great Blaine']

相关问题 更多 >

    热门问题