这次学习笔记整理了在学习list和tuple、条件判断和循环、dict和set、函数、切片、列表生成式、生成器七个方面的内容,内容很基础,但是有些琐碎。那么,让我们赶快开始吧。
(1)list和tuple
Python内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素。在实际使用的过程中把它当做数组使用即可。值得注意的是list有append方法向list末尾添加元素。
classmates = [‘Michael‘, ‘Bob‘, ‘Tracy‘]
>>> classmates.append(‘Adam‘)
>>> classmates
[‘Michael‘, ‘Bob‘, ‘Tracy‘, ‘Adam‘]
另一种有序列表叫元组:tuple。tuple和list非常类似,但是tuple一旦初始化就不能修改,比如同样是列出同学的名字。
classmates = (‘Michael‘, ‘Bob‘, ‘Tracy‘)
(2) 条件判断与循环
比如做条件判断,注意if语句行末尾的冒号
if age >= 18:
print ‘your age is‘, age
print ‘adult‘
或者加入else语句
if age >= 18:
print ‘your age is‘, age
print ‘adult‘
else:
print ‘your age is‘, age
print ‘teenager‘
循环这里涉及到可迭代对象,对所有可迭代对象均可以调用for循环语句便利其中的所有元素。比如dict为可迭代对象,下面的代码就是对一个dict做迭代(遍历)
>>> d = {‘a‘: 1, ‘b‘: 2, ‘c‘: 3}
>>> for key in d:
... print key
a
c
b
(3)dict和set
Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。比如查找同学成绩,代码如下:
>>> d = {‘Michael‘: 95, ‘Bob‘: 75, ‘Tracy‘: 85}
>>> d[‘Michael‘]
95
set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。要创建一个set,需要提供一个list作为输入集合,重复元素会被自动过滤:
>>> s = set([1, 1, 2, 2, 3, 3])
>>> s
set([1, 2, 3])
可用&和|做集合的交和并运算。
>>> s1 = set([1, 2, 3])
>>> s2 = set([2, 3, 4])
>>> s1 & s2
set([2, 3])
>>> s1 | s2
set([1, 2, 3, 4])
(4) 函数
与C语言中的函数不同,python中的函数可以返回多个值。比如:游戏中经常需要从一个点移动到另一个点,给出坐标、位移和角度,就可以计算出新的新的坐标:
import math
def move(x, y, step, angle=0):
nx = x + step * math.cos(angle)
ny = y - step * math.sin(angle)
return nx, ny
注意函数在定义时第一行的末尾有冒号。
(5) 切片
取list或者tuple的某一段元素时会用到切片操作,常用用法如下所示:
>>> L = [‘Michael‘, ‘Sarah‘, ‘Tracy‘, ‘Bob‘, ‘Jack‘]
第0个开始到第3个之前
>>> L[0:3]
[‘Michael‘, ‘Sarah‘, ‘Tracy‘]
>>> L = range(100)
所有数,每
5
个取一次
>>> L[::5]
[0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95]
甚至什么都不写,只写[:]
就可以原样复制一个list。
(6)列表生成式
列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式。
如果要生成1到100所有完全平方数的列表。
>>> [x * x for x in range(1, 11)]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
一行代码即可解决问题
(7)
生成器
和列表生成式不同的是,把最外面的
[]
改为()即为生成器,它也是可迭代的。
>>> g = (x * x for x in range(10))
>>> for n in g:
... print n
最终输出的即为1到100共10个完全平方数。