Python学习第十一篇——for 的本质及如何正确修改列表
假如现在有一个列表:magicians_list = ['mole','jack','lucy'],现在想通过一个函数来实现,在列表的每个元素前面加上“the Great”的字样。现在通过一个函数来实现:
def make_great(names):
for name in names:
name = "the Great "+name
print("hahaha:"+name)
print(names) 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列表本身的元素,必须通过下标的方式,访问到元素本身才可以,下给出修正后的函数代码:
def make_great(names):
for num in range(len(names)):
names[num]= "the Great "+names[num]
给出程序执行结果:

可见,得到了我们想要的结果
Python学习第十一篇——for 的本质及如何正确修改列表的更多相关文章
- Python 学习 第十一篇:numpy
numpy是Python中的基础模块,类型ndarray定义了一个具有矢量算术运算的多维数组,无需编写循环,就能对整个数组进行批量运算.通常情况下,导入numpy,设置别名为np. import nu ...
- 【python自动化第十一篇】
[python自动化第十一篇:] 课程简介 gevent协程 select/poll/epoll/异步IO/事件驱动 RabbitMQ队列 上节课回顾 进程: 进程的诞生时为了处理多任务,资源的隔离, ...
- Python 学习 第十篇 CMDB用户权限管理
Python 学习 第十篇 CMDB用户权限管理 2016-10-10 16:29:17 标签: python 版权声明:原创作品,谢绝转载!否则将追究法律责任. 不管是什么系统,用户权限都是至关重要 ...
- Python学习笔记进阶篇——总览
Python学习笔记——进阶篇[第八周]———进程.线程.协程篇(Socket编程进阶&多线程.多进程) Python学习笔记——进阶篇[第八周]———进程.线程.协程篇(异常处理) Pyth ...
- Python学习笔记基础篇——总览
Python初识与简介[开篇] Python学习笔记——基础篇[第一周]——变量与赋值.用户交互.条件判断.循环控制.数据类型.文本操作 Python学习笔记——基础篇[第二周]——解释器.字符串.列 ...
- Python学习笔记——基础篇2【第三周】——计数器、有序字典、元组、单(双)向队列、深浅拷贝、函数、装饰器
目录 1.Python计数器Counter 2.Python有序字典OrderredDict 3.Python默认字典default 4.python可命名元组namedtuple 5.Python双 ...
- Python学习笔记——基础篇【第七周】———类的静态方法 类方法及属性
新式类和经典类的区别 python2.7 新式类——广度优先 经典类——深度优先 python3.0 新式类——广度优先 经典类——广度优先 广度优先才是正常的思维,所以python 3.0中已经修复 ...
- 从.Net到Java学习第十一篇——SpringBoot登录实现
从.Net到Java学习系列目录 通过前面10篇文章的学习,相信我们对SpringBoot已经有了一些了解,那么如何来验证我们的学习成果呢?当然是通过做项目来证明啦!所以从这一篇开始我将会对之前自己做 ...
- Python 学习笔记---基础篇
1. 简单测试局域网中的电脑是否连通.这些电脑的ip范围从192.168.0.101到192.168.0.200 import subprocess cmd="cmd.exe" b ...
随机推荐
- [转载] erp开发-数据查询优化方法
系统运行环境:MSSQL 2008随着公司业务快速发展,各种业务数据如火箭般的高速增长,出现一个又一个千万行数据的表,往往大表之间的关联,耗费系统大量的磁盘io,并且会影响正常的实时业务的操作,所以我 ...
- adb入门学习笔记
连接模拟器(模拟器桥接模式) 使用adb devices列出已连接到工作站的设备. 使用adb shell 启动设备或模拟器上的shell. 列出设备已安装的所有软件包 将电脑文件移动到手机模拟器上( ...
- 【PAT】B1011 A+B 和 C
注意数据的范围,使用long long就行了 #include<stdio.h> int main(){ int N;scanf("%d",&N); for(i ...
- php笔记(一)php介绍及数据类型
php 官方手册:http://php.net/manual/zh/ 1.PHP(全称 Hypertext Preprocessor,超文本预处理器的字母缩写)是一种服务器端脚本语言,它可嵌入到 HT ...
- Teradata 终止回滚方法(rcvmanager工具)
1.使用root用户登录数据库节点 ssh root 2.启动database window cnsterm 3.启动rcvmanager start rcvmanager 4.确认utiltiy在哪 ...
- 分布式消息中间件rocketmq的原理与实践
RocketMQ作为阿里开源的一款高性能.高吞吐量的消息中间件,它是怎样来解决这两个问题的?RocketMQ 有哪些关键特性?其实现原理是怎样的? 关键特性以及其实现原理 一.顺序消息 消息有序指的是 ...
- socket.setSoTimeout(1000);
这个用来设置与socket的inputStream相关的read操作阻塞的等待时间,超过设置的时间了,假如还是阻塞状态,会抛出异常java.net.SocketTimeoutException: Re ...
- springboot常见写法
访问html文件 对于aa.html页面,采用跳转到方式:放在templates目录下时,要加一个thymeleaf依赖,并在controller跳转. 不用跳转到方式: 将依赖去掉,将control ...
- UVA208-Firetruck(并查集+dfs)
Problem UVA208-Firetruck Accept:1733 Submit:14538 Time Limit: 3000 mSec Problem Description The Ce ...
- [matlab] 23.matlab自带kmeans函数 实现聚类
clc,clear all; point=[1.40000000000000,0.200000000000000;1.40000000000000,0.200000000000000;1.300000 ...