集合容器:列表 元组 列表和元组相互转换 字典 set
列表:
用一对方括号[]表示 列表中可以存储任何类型的数据
一般情况下一个列表存放的数据类型 都一样 这样便于对列表的操作
增:
list.append(value) 在列表尾部添加元素
value = list.insert(index) 根据索引向列表中插入元素
list.extend(list1) 向list追加list1中所有的元素 也是两个列表相连接的意思
删:
list.remove(value) 移除列表中某个元素
list.pop() 删除列表末尾元素
list.pop(index) 根据索引删除元素
del list[index] 根据索引删除元素
查:
value = list[index] 根据索引查找元素
list.count(value) 统计列表中某个元素出现次数
index = list[value] 根据值来查找对应的索引
len(list) 列表长度
max(list) 列表中元素最大值 仅限于列表中都是数字的情况
min(list) 列表元素最小值
改: list[index] = value
切片: list[x:y:l] x:从索引几开始(包含) y:到索引几结束(不包含) l:每次切片的长度
常见的几种情况
list = [1,2,3,4,5,6,7,8,9,0]
#从头切到位
print(list[::]) #[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
print(list[1:5:2]) #[2, 4]
print(list[0:5:2]) #[1, 3, 5]
print(list[::-1]) #[0, 9, 8, 7, 6, 5, 4, 3, 2, 1]
print(list[::-2]) #[0, 8, 6, 4, 2]
print(list[-2:1:-2])#[9, 7, 5, 3]
print(list[-2:1:2]) #[]若找不到则输出空列表
print('*'*30)
判断:
in 在则输出Ture 否则返回False
not in 不在则输出Ture 否则返回False
反转:
reserve()
list.reverse() 对原列表倒叙排列
list.sort() 按顺序排列
'''
#reverse = True 时倒序排列
list1 = [1,2,3,4,5,69,0,7,8,]
print(list1)
list1.sort()# list.sort()=list.sort(reserve = False)
print(list1)
list1.sort(reverse = True)#false 默认正序 Ture 默认倒序
print(list1)
'''
遍历: for in while enumerate
'''
list1 = [1,2,3,4,5,6,7,8,9,0]
print('****************1、for 变量名 in list*******************')
for a in list1:
print(a)
print('****************2、for index in range(list)*******************')
for a in range(len(list1)):
print('index-->%s,value-->%s'%(a,list1[a]))
print('****************3、while index < len(list)*******************')
a = 0
while a < len(list1):
print('index-->%s,value-->%s'%(a,list1[a]))
a+=1
print('****************4、for index,obj in enumerate(list)*******************')
for a,obj in enumerate(list1):
print('index-->%s,value-->%s'%(a,list1[a]))
'''
元组:
tuple用一对小括号()表示
元组和列表相似 但是元组是不可改变的
有查询,判断的操作
max(tup) min(tup) value = tup[index] len(tup) in not in
删除的话是删除整个列表
和列表一样也可以使用四种方法遍历
列表和元组相互转换:
list = list(tup)
tup = tuple(list)
'''
list1 = [5,6,7]
tup = tuple(list1)
print(tup)
tup = (1,2,3)
list1=list(tup)
print(list1)
'''
字典:
用对花括号表示{key:value}
字典里面元素都是键值对的形式存在 key必须是唯一的 value可以是任何类型
增(改):
map('key') = value 若字典中没有该键则添加 若有则更新此键对应的值
删:
map.pop(key) 根据键删除元素 并将此元素返回
map.popitem() 随机删除一个键值对
del map[key] 根据键删除元素
map.clear() 清空字典
查:
value = map[key] 根据键查询值 若无此键报错
value = map.get(key,[默认值]) 如果key不存在,可以返回None,或者自己指定的value
len(map) 字典中键值对的个数
str(map) 输出字典可打印的字符串表示
map.keys() 输出所有键
map.values() 输出所有值
map.items() 输出所有键值对
判断: in not in
遍历:for循环遍历的三种方式
'''
map1 = {'a':'a','b':'b','c':'c','d':'d'}
for a in map1.keys():
print('key-->%s,value-->%s'%(a,map1[a]))
print('***********************************')
for a in map1:
print('key-->%s,value-->%s'%(a,map1[a]))
print('***********************************')
for k,v in map1.items():
print('key-->%s,value-->%s'%(k,v))
'''
其他操作:
map2 = map1.copy() 返回一个新的字典,内容一样,地址不同
dict.update(dict2) 把字典dict2的键值对更新到dict里
和list比较,dict有以下几个特点:
查找速度极快,不会随着key的增加而变慢;
需要占用大量的内存,内存浪费多。
而list:
查找和插入的时间随着元素的增加而增加;
占用空间小,浪费内存很少。
所以,dict是用空间来换取时间的一种方法。
set:
set = {值1,值2,.....值}
set是无序的 元素不可重复的集合 可以用来过滤重复元素
增:
set.add(value) 向set中添加元素
set.update(value) 将一个可迭代的内容,一一加入set中
删:
set.pop() 删除任意一个值
set.discard(value) 删除指定元素 若无此元素也不报错
set.remove(value) 删除指定元素 若无此元素报错
set.clear() 清空set集合
其他:
| 并集
& 交集
intersection 交集函数 print(set.union(set1))
- 差集
difference 差集
in 判断
union 联合
issubset 子集
issuperset 父集
多维:
多维列表,元组
就是列表里套列表 这里以列表为例子
'''
list1 = [[1,2],[1,2,3],[1,2,3,4,],[1,2,3,4,5]]
#遍历此列表
x = 0
#外层循环遍历行
while x < len(list1):
y = 0
#内层循环遍历列
while y < len(list1[x]):
print('x-->%s,y-->%s,xy-->%s'%(x,y,list1[x][y]))
y+=1
x+=1
'''
传递:
可变类型:列表 字典 set
两个变量引用同一个元素时 地址值是相同的,
当一个变量值发生变化另一个变量值 也会发生变化
不可变类型:int float str bool None 元组
两个变量引用一个值时,地址值时相同的修改一个变量值,
不会影响另外一个变量值
'''
#不可变类型
a = 1
b = a
print(a)
print(id(a))
print(b)
print(id(b))
print('**********************')
a = 2
print(a)
print(id(a))
print(b)
print(id(b))
print('**********************')
#可变类型
set = {1,2,3,4,5,56}
set1 = set
print(set)
print(id(set))
print(set1)
print(id(set1))
print('**********************')
set.pop()
print(set)
print(id(set))
print(set1)
print(id(set1))