think python 2e第十章_think python 第10章 lists

10.1列表就是序列

10.2列表是可变的

10.3遍历列表

#若需要写或更新元素,需要通过下标访问,一个常用的方法是结合range和len函数

num = [1,2,3,4,5]for i inrange(len(num)):

num[i]= num[i] * 2

print(num)#对于一个看Jon个列表的for循环将不会执行循环的主体

for x inempty:print('this never happens')

10.4lists operations

+是连接操作;*是给定次数重复列表

10.5lists slices

10.6lists methods

append添加至列表尾部,extend添加一个列表至列表尾部;sort从小到大排序

10.7map,filter and reduce

defcapitalize_all(t):

res=[]for i int:

res.append(s.capitalize())return res

defonly_upper(t):

res=[]for i int:ifs.isupper():

res.append(s)return res

10.8 deleting elements

pop修改列表,,并返回被删除的元素。如果不提供下表,将删除最后一个元素。

如果不需要被删除的值,可以用del。

如果知道要删除的元素(但不知道下标),可以使用remove,remove的返回值是None

10.9lists and string

list函数将字符串分割成单独的字符,如果要将字符串分割成单词,可以使用split方法。一个可选的参数称为分隔符,指定了什么字符作为分界线。join功能与split相反,将一个列表字符串连接起来。

10.10objects and values

>>> a = 'banana'

>>> b = 'banana'

>>> a isb

True>>> a = [1,2,3]>>> b = [1,2,3]>>> a isb

False>>> #字符串 a跟b是相同的;列表a跟b是相等的,但是是不同的

10.11 aliasing (别名)

>>> a = [1,2,3]>>> b =a>>> b isa

True>>> b[0] = 11

>>> print(a)

[11, 2, 3]>>> #一个变量和一公分对象的关联称为引用,这这个例子中,同一个对象有两个引用。如果一个对象有多于一个引用,我们称这个对象是有别名的。有别名的对象是可以改变的,对一个别名的改变会影响另一个。所以应该尽量避免这种情况。

10.12list arguments

>>> t1 = [1,2]>>> t2 = t1.append(3)>>> print(t1)

[1, 2, 3]>>> print(t2)

None>>> #append方法是修改一个列表

>>> t1 = [1,2]>>> t3 = t1 + [3]>>> print(t3)

[1, 2, 3]>>> t2 ist3

False

>>> defbad_delete_head(t):

t= t[1:] #wrong

>>> #切片操作创建一个新的列表,并使t指向它。但这些操作对作为参数的列表没有影响

>>> #一个替代的写法是创建并返回一个新的列表。

>>> deftail(t):return t[1:]>>> #但这个函数并不修改原先的列表,下面给出如何使用这个函数

>>> letters = ['a','b','c']>>> rest =tail(letters)>>> print(rest)

['b', 'c']

10.13debugging

有3点需要记住:

1.大多数的列表的方法对参数进行修改,然后返回None。字符串的方法则相反,他们保留原始的字符串并返回一个新的字符串

2.养成自己的编码习惯

3复制拷贝,避免别名

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于一个自学程序设计的入门者而言,他需要一本什么样的书呢?我认为标准有以下三个: 第一,介绍足够用的知识。这一点看似简单,但是却不易掌握,像许多人推荐的 A Byte of Python,内容就明显过少了,而处于另一个极端的 Learning Python 篇幅超过一千页,又明显超出入门者的需要。对于程序设计初学者而言,他们所需要的是(a)编程语言的基本特性;(b)程序设计的基本原则和思想。在这一点上 Think Python 就做得不错,240页的篇幅虽然不大,但是由于文风简洁紧凑,已经涵盖了程序设计的基本方面,甚至连 Debugging 这样的话题都有比较深入的探讨。 第二,具有足够而具有挑战性的习题。学习编程语言和学习外语有类似之处,要真正掌握必须经历在学习区刻意练习的过程,所谓学习区,就是你需要付出一定努力才能达到的区域。但是许多书籍题目设计并不完善,往往题目数量不够且挑战性不足,达不到刻意练习的要求。Think Python 的课后习题的编排我认为是非常出色的,首先题目本身非常有趣,其中不少题目取自 Car Talk 的 Puzzler 节目;其次题目的练习强度也基本足够,Allen B. Downey 在官方网站上提供的部分习题答案范例总行数达到了 8456 行(统计包含注释和空行),如果连同在 Python Shell 练习的代码,读完全书所写过的代码不会少于 2500 行;最后,题目本身具有一定的挑战性,绝对不是书中范例的简单重复,其中不少习题是给出提示要求你改进书中的范例。总而言之,在这方面我对 Think Python 也是比较满意的。 第三,内容有趣。现在许多流行的编程入门书(例如 Head First 系列)表面上看很有趣,但是细读下来很快就会对书中那些简单而又虚假的问题感到厌烦。Think Python 中所涉及的问题在深度上要更胜一筹,具有一定的难度,能让人静下心来真正思考问题的解决方案,而且书中的不少节所解决的问题也具有实用性,例如 Case study: data structure selection 这一中就涉及文本词频的分析、生成随机文本等问题,Files 这一则涉及了根据 MD5 寻找重复文件的问题等等。 说完这本书的优点,再简单说说这本书的缺点,主要还是一些细节问题:例如,string 的不少 method 没有涵盖到;pickle 不介绍 dump 和 load,而是介绍了 dumps 和 loads;List Comprehension 只是一笔带过,没有细讲;异常方面的介绍实在太过精简,如此重要的话题应当多花些笔墨介绍;在 OOP 的部分太过拖沓,前面两大可合并精简,而且 __init__ method 完全可以更早引入,以利于培养良好的编程风格。不过总体来说瑕不掩瑜。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值