一、list
列表,可变、有序的集合。
classmates = ['Michael', 'Bob', 'Tracy']
print(classmates)
可以用len()方法获取list元素个数。如len(classmates)结果是3。
用索引访问,如classmates[0]是'Michael',要特别注意,和C语言一样,从0开始而不是从1开始!
还可以用负数,-1表示最后一个元素,-2表示倒数第二个,以此类推。
可以往list中追加元素到末位:
classmates.append('Adam')
也可以追加插入到指定的位置:
classmates.insert(1, 'Jack')
删除list末位的元素:
classmates.pop()
删除list中指定位置的元素:
classmates.pop(1)
替换:直接赋值到指定索引位置:
classmates[1] = 'Sarah'
list的元素数据类型可以不同,list的元素也可以是另一个list。如:
p = ['asp', 'php']
s = ['python', 'java', p, 'scheme']
要拿到php,可以用p[1],或者s[2][1]。
上述代码请自行编写并打印测试结果,以帮助理解。
二、tuple
称为“元组”。tuple和list非常类似,都是有序列表,但是tuple一旦初始化就不能修改。
classmates = ('Michael', 'Bob', 'Tracy')
它存在的意义就在于安全性。一般能确定下来的元素,能用tuple就尽量用tuple,不用list。
还有高级的用法,比如在tuple中嵌入list,这样感觉上去tuple中元素就可以变化了。
三、dict
字典。做过面向对象开发的同学,应该很熟悉了,相当于java中的map,在OC中也叫dictionary,就是键值对存储。例如:
d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
打印d['Michael']试试?
上面是用key来读value,也可以用key存储value,如:d['Michael'] = 100。
要删除一个键值对,用pop()方法:
d.pop('Bob')
请务必注意,dict内部存放的顺序和key放入的顺序是没有关系的。
和list比较,dict有以下几个特点:查找和插入的速度极快,不会随着key的增加而变慢;需要占用大量的内存,内存浪费多。查找和插入的时间随着元素的增加而增加;占用空间小,浪费内存很少。而list相反。
所以,dict是用空间来换取时间的一种方法。
四、set
这里传入的是list,但是输出已经不是list而是set了。{1,2,3}的意思是,这个set里面有1,2,3这三个元素,但是是无序的!
若输入重复元素,会被过滤:
还可以增加和删除key:
set的无序、无重复特性,可以用来干嘛呢?——集合运算!交并补!