我们一般把四个list、tuple、set、dict叫做容器。
容器是用来存放对象的,它是在内存中开辟的
一,列表(list)
列表是一种线性表,由大量节点组成,每一个节点都可存放数据,
(1) 创建
>>> a = list ()
>>> type(a)
<class 'list'>
>>> b = list([3,5,4,2,5])
>>> type(b)
<class 'list'>
>>> c = [4,3,2]
>>> type(c)
<class 'list'>
>>> d = [3,"ha","xi"]
>>> type(d)
<class 'list'>
>>> e = [range(1,4)]
>>> type(e)
<class 'list'>
(1)len()
>>> list1 = [2,3,6,2,1,3,5,7]
>>> len(list1)
8
(2)通过下标可以访问下标对应的值,并且可以根据下标进行新的赋值
格式:
列表名[下标]
赋值 : 列表名[下标] = 新的值
>>> print(list1[3])
2
>>> list1[4]
1
>>> list1[1] = 9
>>> list1
[2, 9, 6, 2, 1, 3, 5, 7]
>>> list1[10]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range
注:下标不能越界,不然就会报错。
(3)
迭代操作:可以被for循环遍历,若想只取一个数出来,用角标方法
>>> for i in list1:
... print(i)
...
2
9
6
2
1
3
5
7
>>> for i in range(0,9):
... print(list1[i])
...
2
9
6
2
1
3
5
7
两个list合并
>>> list2 = [5,4,3,2,"haha","嘻嘻"]
>>> list1 + list2
[2, 9, 6, 2, 1, 3, 5, 7, 5, 4, 3, 2, 'haha', '嘻嘻']
重复:
>>> list3 = [2,3,2,5]*3
>>> list3
[2, 3, 2, 5, 2, 3, 2, 5, 2, 3, 2, 5]
判断元素是否在list列表里
>>> list1
[2, 9, 6, 2, 1, 3, 5, 7, 21]
>>> 9 in list1
True
>>> 10 in list1
False
>>> 10 not in list1
True
可以截取列表一部分数据:
>>> list1
[2, 9, 6, 2, 1, 3, 5, 7, 21]
>>> list1[1:3]=[6,6,6] #也可替换一部分数据
>>> list1
[2, 6, 6, 6, 2, 1, 3, 5, 7, 21]
>>> list1[1:4] #[1:4] [1,4)的下标数据
[6, 6, 6]
列表中常用的方法:
格式:
列表名.方法 # .是用来调用某一方法。
>>> list3
[2, 3, 2, 5, 2, 3, 2, 5, 2, 3, 2, 5]
(1)count 统计元素在列表中的个数
>>> list3.count(2)
6
(2)insert 制定要插入的元素的位置 格式(下标,元素)
>>> list3.insert(3,6)
>>> list3
[2, 3, 2, 6, 5, 2, 3, 2, 5, 2, 3, 2, 5]
(3)pop 通过下标移除元素,注意:默认没有下标时删除最后一个
>>> list3.pop(3)
6
>>> list3
[2, 3, 2, 5, 2, 3, 2, 5, 2, 3, 2, 5]
>>> list3.pop()
5
>>> list3
[2, 3, 2, 5, 2, 3, 2, 5, 2, 3, 2]
(4)copy 浅拷贝list,一定分别出拷贝和引用传递
>>> list4 = list3.copy()
>>> list4
[2, 3, 2, 5, 2, 3, 2, 5, 2, 3, 2, 5]
(5)clear 清空容器
>>> list4.clear()
>>> list4
[]
(6)remove 移除确定的元素,移除出现的第一个元素,,注意:如果列表中不存在该元素,则抛出异常
>>> list3.remove(5)
>>> list3
[2, 3, 2, 2, 3, 2, 5, 2, 3, 2]
(7)reverse 翻转元素的顺序
>>> list3.reverse()
>>> list3
[2, 3, 2, 5, 2, 3, 2, 2, 3, 2]
(8)sort 排序(主要针对数字)
>>> list3.sort()
>>> list3
[2, 2, 2, 2, 2, 2, 3, 3, 3, 5]
(9)extend 合并列表
>>> list6 =[2,6,8,4]
>>> list7 =["xixi"]
>>> list6.extend(list7)
>>> list6
[2, 6, 8, 4, 'xixi']
>>> list7
['xixi']
(10) index 查询元素在列表中第一次出现的下标位置,注意:
如果列表中不存在该元素,则抛出异常
>>> list6.index(6)
1
>>> list6.index(3)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: 3 is not in list
(11)append 在尾部追加一个新的元素
>>> list6.append(3)
>>> list6
[2, 6, 8, 4, 'xixi', 3]
二 ,集合(set)
(1)定义集合:
>>> s = set()
>>> type(s)
<class 'set'>
>>> s1 = {3,4,2,1,4}
>>> type(s1)
<class 'set'>
>>> s2 = set((3,4,2,1,4))
>>> type(s2)
<class 'set'>
>>> s4 = {} 注:在没有元素的情况下,它属于字典类型
>>> type(s4)
<class 'dict'>
(1)add()
>>> s1.add(10)
>>> s1
{1, 2, 3, 4, 10}
(2)copy
>>> s5 =s1.copy()
>>> s5
{1, 2, 3, 4, 10}
>>> s2
{1, 2, 3, 4}
>>> s6 = {4,5,7,3,2,8}
>>> s6
{2, 3, 4, 5, 7, 8}
>>> s2
{1, 2, 3, 4}
(3)两个集合的差集
>>> s2.difference(s6)
{1}
>>> s6.difference(s2)
{8, 5, 7}
注差集的顺序不一样,结果就不一样
(4)两个集合的交集
>>> s6.intersection(s2)
{2, 3, 4}
(5)两个集合的并集
>>> s2.union(s6)
{1, 2, 3, 4, 5, 7, 8}
>>> s5
{1, 2, 3, 4, 10}
(6)移除元素,不存在不会报错
>>> s5.remove(2)
>>> s5
{1, 3, 4, 10}
(7)移除元素,如果存在,不存在也不报错
>>> s8 = s5
>>> s9 = s5.copy()
>>> s9
{1, 10, 3, 4}
>>> s8
{1, 3, 4, 10}
>>> s5.discard(4)
>>> s5
{1, 3, 10}
>>> s8
{1, 3, 10}
>>> s9
{1, 10, 3, 4}
注:
copy 与 = 区别
copy的元素,原来的元素改变,不影响copy后的元素
但= ,就会改变,随着原来的元素一起改变。
列表也是一样
(8)清空容器
>>> s8.clear()
>>> s8
set()
三,元组(tuple)
元组的定义
>>> t1 = (5,3,7,2,7,8,4,3)
>>> type(t1)
<class 'tuple'>
>>> t2 = ("haha","xixi","你好")
>>> type(t2)
<class 'tuple'>
元组的方法:
(1)count
>>> t1.count(3)
2
(2)index
>>> t1.index(3)
1
注意:
(1)
>>> t1 = (1)
>>> type(t1)
<class 'int'>
>>> t1 = (1,)
>>> type(t1)
<class 'tuple'>
当元组里只有一个元素是,在元素后面加上逗号。用来区分int和元组tuple。
(2)
指向新的元组
>>> t1 = (1,2)
>>> t1 = (1,2,3)
>>> t1
(1, 2, 3)
元组也可以通过下标访问
>>> t1[1]
2
>>> t1[1] = 5
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>>
元组元素是固定的:是指不能给一个元组添加,删除,和替换。并不是不能指向新的元组
四,字典
结构为二维表: {}keys:values}
key必须是字符串。
字典的定义:
>>> d = {}
>>> type(d)
<class 'dict'>
>>> d1 =dict()
>>> type(d1)
<class 'dict'>
>>> d4 = {"name":"haha","age":21,"sex":"boy"}
字典里的方法:
(1)clear
(2)copy
(3)items 返回键值对
>>> d3.items()
dict_items([('name', 'zhangsan'), ('age', 23)])
(4)返回所有的values
>>> d3.values()
dict_values(['zhangsan', 23])
(5)返回所有的key
>>> d3.keys()
dict_keys(['name', 'age'])
(6)通过key,删除对应的键值对,注意:如果该键不存在,则抛出异常
>>> d3.pop("age")
23
>>> d3
{'name': 'zhangsan'}
>>> d4
{'name': 'haha', 'age': 21, 'sex': 'boy'}
(7)popitem # 移除一个键值对,按照LIFO规则 LIFO(后进先出)FIFO(先进先出)
>>> d4.popitem()
('sex', 'boy')
>>> d4
{'name': 'haha', 'age': 21}
(8)get # 通过key或者该key对应的值,如果没有这个key,则返回None
>>> d4.get("name")
'haha'
>>> d4.get("sex")