集合set:集合底层使用的hash算法
特点:无序、不能重复
定义集合:
s={至少要有一个元素} 不推荐使用这种方式
s=set() 得到一个集合
s=set([列表]) 将列表转换为一个集合
s=set({集合}) 初始化集合
常见的方法
add() 添加元素
clear() 清空元素
copy() 浅拷贝对象
pop() 任意弹出元素
remove() 删除对应的元素,如果没有该元素,会报错
union() 求两个集合的并集
difference()求两个集合的差集
intersection()求两个集合的交集
discard() 删除对应的元素,如果没有该元素,则没有影响
一行代码完成list 的去重
利用集合的自动去重功能去重,缺点是:使用set方法无法保证去重后的顺序
li=[1,2,3,4,5,1,2,3]
li=list(set(li))
print(li)
但是可以利用列表中索引(index)的方法保证去重后的顺序不变
li=[1,2,3,4,5,1,2,3]
new_li=list(set(li))
new_li.sort(key=li.index)
print(new_li)
元组(不可变类型)
元组就是一组固定的值
元组的定义:
变量名称=(值1,值2,)
变量名称=tupe([列表])
变量名称=tupe([集合])
注意:python使用逗号分别元素与元组的差别
t2=(2) 和 t3=(2,)的区别
- 方法:
index() 显示元素的下标位置
count() 统计元素的个数
注意:如果元组存在可变类型,该可变类型是可以修改的
dict(字典)
{k:v,k1:v2,}
定义:
d={"age":16,"name":"laowang","address":"xi'an"}
d2=dict({'a':100,'b':200})
dict[key] 得到对应的值,如果key不存在,则抛出错误
dict[key]=新值 也可以赋值
>>> d={"age":16,"name":"laowang","address":"xi'an"}
>>> d
{'age': 16, 'name': 'laowang', 'address': "xi'an"}
>>> type(d)
<class 'dict'>
>>> d['age']
16
>>> d['address']
"xi'an"
>>> dir(d)
['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__',
'__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__',
'__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__',
'__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear',
'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update',
'values']
- 常用方法
clear()
copy()
values() 获取字典的所有值
keys() 获取字典的所有键
item() 成对获取键值对,主要用于迭代dict
get(key) 返回key对应的值,注意,如果key不存在,则返回none
pop(key) 根据key,移除对应键值对
popitem() 从最后移除一个键值对
迭代字典
d={"age":16,"name":"laowang","address":"xi'an"}
for i in d():
print(i,d[i])
这两个是一个操作
for i in d.keys():
print(i,d[i])
for k,v in d.items():
print(k.v)