笨方法学习Python-习题39: 列表的操作
来源:互联网 发布:万德数据库使用方法 编辑:程序博客网 时间:2024/06/11 23:21
你已经学过了列表。在你学习“while 循环”的时候,你对列表进行过“追加(append)”操作,而且将列表的内容打印了出来。另外你应该还在加分习题里研究过 Python 文档,看了列表支持的其他操作。这已经是一段时间以前了,所以如果你不记得了的话,就回到本书的前面再复习一遍把。
找到了吗?还记得吗?很好。那时候你对一个列表执行了 append 函数。不过,你也许还没有真正明白发生的事情,所以我们再来看看我们可以对列表进行什么样的操作。
当你看到像 mystuff.append('hello') 这样的代码时,你事实上已经在 Python 内部激发了一个连锁反应。以下是它的工作原理:
- Python 看到你用到了 mystuff ,于是就去找到这个变量。也许它需要倒着检查看你有没有在哪里用 = 创建过这个变量,或者检查它是不是一个函数参数,或者看它是不是一个全局变量。不管哪种方式,它得先找到 mystuff这个变量才行。
- 一旦它找到了 mystuff ,就轮到处理句点 . (period) 这个操作符,而且开始查看 mystuff 内部的一些变量了。由于 mystuff 是一个列表,Python 知道mystuff 支持一些函数。
- 接下来轮到了处理 append 。Python 会将 “append” 和 mystuff 支持的所有函数的名称一一对比,如果确实其中有一个叫 append 的函数,那么 Python 就会去使用这个函数。
- 接下来 Python 看到了括号 ( (parenthesis) 并且意识到, “噢,原来这应该是一个函数”,到了这里,它就正常会调用这个函数了,不过这里的函数还要多一个参数才行。
- 这个额外的参数其实是…… mystuff! 我知道,很奇怪是不是?不过这就是 Python 的工作原理,所以还是记住这一点,就当它是正常的好了。真正发生的事情其实是 append(mystuff, 'hello') ,不过你看到的只是mystuff.append('hello') 。
下面的练习将字符串和列表混在一起,看看你能不能在里边找出点乐子来:
# coding=utf-8ten_things = "Apples Oranges Crows Telephone Light Sugar"print("Wait there's not 10 things in that list,let's fix that.")stuff = ten_things.split(' ') #分割字符串more_stuff = ["Day","Night","Song","Frisbee","Corn","Banana","Girl","Boy"]while len(stuff) != 10: #返回对象(字符、列表、元组等)长度或项目个数 next_one = more_stuff.pop() #移除列表中的一个元素(默认最后一个元素),并且返回该元素的值 print("Adding: ",next_one) stuff.append(next_one) #在列表末尾添加新的对象 print("There's %d items now." % len(stuff))print("There we go: ",stuff)print("Let's do some things with stuff.")print(stuff[1])print(stuff[-1]) #whoa! fancyprint(stuff.pop())print(' '.join(stuff)) #what? cool!print('#'.join(stuff[3:5])) #super stellar!
加分习题
- 将每一个被调用的函数以上述的方式翻译成 Python 实际执行的动作。例如: ' '.join(things) 其实是 join(' ', things) 。
- 将这两种方式翻译为自然语言。例如, ' '.join(things) 可以翻译成“用 ‘ ‘ 连接(join) things”,而 join(' ', things) 的意思是“为 ‘ ‘ 和 things 调用 join 函数”。这其实是同一件事情。
- 上网阅读一些关于“面向对象编程(Object Oriented Programming)”的资料。晕了吧?嗯,我以前也是。别担心。你将从这本书学到足够用的关于面向对象编程的基础知识,而以后你还可以慢慢学到更多。
- 查一下 Python中的 “class” 是什么东西。不要阅读关于其他语言的 “class” 的用法,这会让你更糊涂。
- dir(something) 和 something 的 class 有什么关系?
- 如果你不知道我讲的是些什么东西,别担心。程序员为了显得自己聪明,于是就发明了 Opject Oriented Programming,简称为 OOP,然后他们就开始滥用这个东西了。如果你觉得这东西太难,你可以开始学一下 “函数编程(functional programming)”。
阅读全文
0 0
- 笨方法学习Python-习题39: 列表的操作
- 笨方法学Python 习题 38: 列表的操作
- 笨方法学习Python-习题34: 访问列表的元素
- 笨方法学习Python-习题32: 循环和列表
- 笨方法学Python 习题 34: 访问列表的元素
- 笨方法学习Python-习题17: 更多文件操作
- 笨方法学python 习题39(列表)习题40(字典)
- 列表的操作,习题38,learn python the hard way.
- 《笨方法学python》习题43的学习笔记
- 笨方法学习Python-习题25: 更多更多的练习
- 笨方法学习Python-习题40: 字典, 可爱的字典
- 习题38 列表的操作
- 笨方法学Python 习题 32: 循环和列表
- 笨方法学习Python-习题11:提问
- 笨方法学习Python-习题42: 物以类聚
- 笨方法学习Python-习题43、44
- python 列表操作的函数和方法
- 笨方法学python 习题32(循环和列表)习题33(while循环)
- 顺序表查找
- JS转换HTML转义符
- rails undefined method `stringify_keys'
- iOS 基本设备信息查询
- spring @Transactional注解参数详解
- 笨方法学习Python-习题39: 列表的操作
- 刚毕业,师傅推荐的书单
- 拼图游戏和它的AI算法
- tuts4you注册问题解析
- android异常 More than one file was found with OS independent path 'META-INF/XXX'
- android 去掉标题栏
- 机器学习算法简介
- Java 算法题编程必会技法(持续更新)
- CentOS 7.x安装mysql