手机版
你好,游客 登录 注册
背景:
阅读新闻

Python对列表中的元素进行批量修改

[日期:2019-05-09] 来源:Linux社区  作者:Linux [字体: ]

Python编程从入门到实战,编写一个名为make_great() 的函数,对魔术师列表进行修改,在每个魔术师的名字中都加入字样“the Great”。
开始使用for循环遍历列表元素,再把“the Great”+原始元素赋值给当前元素,无果。

原始代码:

def make_great(magicians):
    for magician in magicians:
        magician = "the Great " + magician
        print(magician)
    return(magician)
magicians=['dante','vergil','leo']
make_great(magicians)
print(magicians)

运行结果:

the Great dante
the Great vergil
the Great leo
['dante', 'vergil', 'leo']
[Finished in 0.0s]

Python对列表中的元素进行批量修改

发现magicians这个列表并没有被修改。

Why?

我修改了一下代码。
修改代码:

def make_great(magicians):
 n=len(magicians)
 for i in range(0,n):
  magicians[i]="The Great "+magicians[i]
  print(magicians[i])
 return magicians

magicians=['dante','vergil','leo']
make_great(magicians)
print(magicians)

运行结果:

The Great dante
The Great vergil
The Great leo
['The Great dante', 'The Great vergil', 'The Great leo']
[Finished in 0.1s]

Python对列表中的元素进行批量修改

成功了。
WHY?

推测:在原始代码中的for循环里的magician,并不能反向索引列表。所以,执行原始代码块时,只是magician这个临时变量被赋值,列表本身并没有影响。而在修改代码中,代码magicians[i]已经很明确地索引了列表第i-1位置的元素,所以这个修改是直接对该元素生效的。

刚自学Python,谬误之处请指正。

更多Python相关信息见Python 专题页面 https://www.linuxidc.com/topicnews.aspx?tid=17

Linux公社的RSS地址https://www.linuxidc.com/rssFeed.aspx

本文永久更新链接地址https://www.linuxidc.com/Linux/2019-05/158567.htm

linux
相关资讯       Python列表修改元素 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款