• Python学习第十一篇——for 的本质及如何正确修改列表


    假如现在有一个列表:magicians_list = ['mole','jack','lucy'],现在想通过一个函数来实现,在列表的每个元素前面加上“the Great”的字样。现在通过一个函数来实现:

    1 def make_great(names):
    2     for name in names:
    3         name = "the Great "+name
    4         print("hahaha:"+name)
    5     print(names)
    6 
    7 make_great(magicians_list)

    运行上述代码,得到结果:

    我们发现,执行完第5行代码,打印的names列表并未变化成 ['the Great mole','the Great jack','the Great lucy'],而是还和原来一样。思考原因是因为:我们要搞清楚的是,列表名才是变量,而列表中的具体的字符串并不是变量,当然我们也可以认为列表名[标号]是变量。

    for name in names:中的name ,本质上是一个变量,且是一个与names 无关的独立的变量!!!!认识到这一点十分重要

    for name in names 只是提供给我们一种访问列表names中元素的方式,并将names中的元素赋值给name 这个变量,因此后文中,我们对变量name 的操作,并不会影响到names列表中元素。只是会改变name 这个和列表毫不相关的变量。

    从另一个角度讲,names中的元素是列表变量names的属性,相当于是一个伪常量(说是伪常量是因为我们仍然可以通过下标的方式访问)

    因此,如果我们想修改names列表本身的元素,必须通过下标的方式,访问到元素本身才可以,下给出修正后的函数代码:

    1 def make_great(names):
    2     for num in range(len(names)):
    3         names[num]= "the Great "+names[num]
    View Code

    给出程序执行结果:

    可见,得到了我们想要的结果

  • 相关阅读:
    找工作经验之——面试(百度篇)
    找工作经验之——面试(微软实习篇)
    以下这个案例给我们什么启发?
    颈椎病
    柳传志写给部下的一封信,告诉你怎样被提拔
    马云:未来三十年会大动荡
    小米:如何用军事理论做商业
    诸葛亮最聪明,为何赢不了
    在最贵的地方点最便宜的菜
    改革有哪四大阻力
  • 原文地址:https://www.cnblogs.com/shaonianpi/p/9479770.html
Copyright © 2020-2023  润新知