List
Python内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素。
用索引来访问list中每一个位置的元素,记得索引是从0
开始的。
下面来看看list一些具体用法:
classmates.append('Adam') #在list尾部插入一个元素
classmates.insert(1, 'Jack') #在指定位置插入一个元素
classmates.pop() #在list末尾的元素被弹出
classmates.pop(1) #弹出list中指定位置的元素
classmates[1] = 'Sarah' #将原本位置的元素直接替换
L = ['Apple', 123, True] #list中的数据类型可以是不同的
s = ['python', 'java', ['asp', 'php'], 'scheme'] #list中的元素也可以是list
p = ['asp', 'php']
s = ['python', 'java', p, 'scheme'] #此时的list可以看作一个二维数组,多维数组以此类推
Tuple
一种有序列表叫元组:tuple。tuple和list非常类似,但是tuple一旦初始化就不能修改
不可变的tuple有什么意义?
答:因为tuple不可变,所以代码更安全
如果要定义一个空的tuple,可以写成()
t = ();
要定义一个只有1个元素的tuple的话【注意】
t = (1); #错误,这样是被当作数字1,因为()在python里面默认是数学中的()
t = (1,); #含一个元素的元组,添加一个“ ,” 来消除歧义。
Dict
Python内置了字典:,使用键-值(key-value)存储,具有极快的查找速度。【索引/查字典】
Dict形式: key,value;
names = ['Michael', 'Bob', 'Tracy']
scores = [95, 75, 85]
#如上述写法添加时,需要两个list
d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
# dict只需要一个
如果key不存在,dict就会报错:
d['Thomas']
# 以下是编译器报的错误
# Traceback (most recent call last):
# File "C:\Users\99587\PycharmProjects\pythonProject4\main.py", line 1, in <module>
# d['Thomas']
# NameError: name 'd' is not defined. Did you mean: 'id'?
Dict中内部存放顺序和放入的顺序无关。
List 和 Dict 对比
- 查找和插入的速度极快,不会随着key的增加而变慢;
- 需要占用大量的内存,内存浪费多。
而list相反:
- 查找和插入的时间随着元素的增加而增加;
- 占用空间小,浪费内存很少。
需要牢记的第一条就是dict的key必须是不可变对象。
Set
set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。
要创建一个set,需要提供一个list作为输入集合:
s = set([1, 2, 3])
# 输入的是列表,输出的是{1, 2, 3}【集合】
【注意】
set中的顺序不表示它是有序的,且重复的key会被自动滤掉
s.add(4) #添加元素
s.remove(4) #删除元素
# set可以看成数学意义上的无序和无重复元素的集合
# 因此,两个set可以做数学意义上的交集、并集等操作
s1 = set([1, 2, 3])
s2 = set([2, 3, 4])
s1 & s2
{2, 3}
s1 | s2
{1, 2, 3, 4}
Dict 和 Set 对比
set和dict的唯一区别仅在于没有存储对应的value,但是,set的原理和dict一样,所以,同样不可以放入可变对象,因为无法判断两个可变对象是否相等,也就无法保证set内部“不会有重复元素