python定义函数遇到的问题

#定义了一个列表

moshushis = ['张三','李四','王二']

#定义一个对函数对列表里的元素进行修改

def make_great(greats):
    num = 0
    for great in greats:
        greats[num] = great + 'the Great'
        num = num + 1
make_great(moshushis)
print(moshushis)


#我尝试用while去实现,最后调用函数的时候返回的却是一个空列表? 
def make_great_while(great_whiles):
    great1_whiles = []
    while great_whiles:
        great1 = great_whiles.pop() + ' hello'
        great1_whiles.append(great1)
    great_whiles = great1_whiles[:]
make_great_while(moshushis)
print(moshushis)
 

def make_great_while(great_whiles):
    great1_whiles = []
    while great_whiles:
        great1 = great_whiles.pop() + ' hello'
        great1_whiles.append(great1)
    return great1_whiles[:]
moshushis = make_great_while(moshushis)
print(moshushis)

 

题主的第二个函数内部,将传入的列表great_whiles清空,生成了一个新的列表great_whiles,虽然名字相同,却已物是人非了。另外,题主的代码,读起来令人胆战心惊,因此顺便帮题主修改了一下。

def make_great(greats):
    """对列表greats里的元素进行修改(for)"""
    
    for i in range(len(greats)):
        greats[i] += 'the Great'

def make_great_while(great_whiles):
    """对列表greats里的元素进行修改(while)"""
    
    i = 0
    while i < len(great_whiles):
        great_whiles[i] += ' hello'
        i += 1

moshushis = ['张三','李四','王二']
make_great(moshushis)
print(moshushis)
make_great_while(moshushis)
print(moshushis)

 

您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

速戳参与调研>>>https://t.csdnimg.cn/Kf0y