list (列表)
Python内置一种数据类型是列表:list,list是一种有序的集合,可以随时添加和删除其中的元素;
其功效和作用和OC以及swift里的可变数组类似;
用len(xxxx)函数可以获得list元素的个数;
用索引来访问list中每一个位置的元素,索引是从0开始;当索引超出了范围时,Python会报一个IndexError错误,所以,要确保索引不要越界,最后一个元素的索引是len(xxxx) - 1;当用来倒数索引查找的时候,我们可以省略len(xxxx),直接写-1,-2,-3,以此类推;
用append(xxxxxxx)函数可以在list末尾追加元素;
用insert(index,xxxxxxx)函数可以在list中插入元素,且是指定位置插入;
用pop()函数可以删除list末尾的元素;
要删除指定位置的元素,用pop(i)方法,其中i是索引位置;
要把某个元素替换成别的元素,可以直接赋值给对应的索引位置;
list里面的元素的数据类型也可以不同;
list元素也可以是另一个list;
tuple (元组)
Python内置另一种有序列表叫元组:tuple,tuple和list非常类似,但是tuple一旦初始化就不能修改;
其功效和作用和OC以及swift里的不可变数组类似;
tuple没有append(),insert()这样的方法,其他获取元素的方法和list是一样的;
因为tuple不可变,所以代码更安全.如果可能,能用tuple代替list就尽量用tuple.
当定义一个tuple时,在定义的时候tuple的元素就必须被确定下来;
如果要定义一个空的tuple,可以写成();
只有1个元素的tuple定义时必须加一个逗号,用来来消除歧义;
t(1,)
条件判断
elif是else if的缩写
if <条件判断1>:
<执行1>
elif <条件判断2>:
<执行2>
elif <条件判断3>:
<执行3>
else:
<执行4>
if语句执行有个特点,它是从上往下判断,如果在某个判断上是True,把该判断对应的语句执行后,就忽略掉剩下的elif和else
循环
for in 和 while ;
while循环,只要条件满足,就不断循环,条件不满足时退出循环.
在循环中,break语句可以提前退出循环.
在循环过程中,可以通过continue语句,跳过当前的这次循环,直接开始下一次循环.continue的作用是提前结束本轮循环,并直接开始下一轮循环.
dict (dictionary)
Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,有极快的查找速度.
由于一个key只能对应一个value,所以,多次对一个key放入value,后面的值会把前面的值冲掉;如果key不存在,dict就会报错;
要避免key不存在的错误,有两种办法:
一是通过in判断key是否存在;
二是通过dict提供的get()方法,如果key不存在,可以返回None,或者自己指定的value;
(返回None的时候Python的交互环境不显示结果)
要删除一个key,用pop(key)方法,对应的value也会从dict中删除;
和list比较,dict有以下几个特点:
查找和插入的速度极快,不会随着key的增加而变慢;
需要占用大量的内存,内存浪费多.
而list相反:
查找和插入的时间随着元素的增加而增加;
占用空间小,浪费内存很少.
所以,dict是用空间来换取时间的一种方法.
dict通过Key找Value的位置遵循的是哈希算法,所以同时也就要求了dict的Key必须具有唯一性,所以dict的Key是一个不可变对象且唯一,要保证hash的正确性,作为key的对象就不能变.在Python中,字符串、整数等都是不可变的,因此,可以放心地作为key.而list是可变的,就不能作为key;
set
set和dict类似,也是一组key的集合,但不存储value.由于key不能重复,所以,在set中,没有重复的key.
通过add(key)方法可以添加元素到set中,可以重复添加,但不会有效果.
通过remove(key)方法可以删除元素.
set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集/并集等操作
(& 取交集, | 取并集).