Python零基础之元组,字典,集合

1.元组 ()

  • Python 的元组与列表类似,不同之处在于元组的元素不能修改。属于不可变序列
  • 元组使用小括号,字典使用大括号,列表使用方括号。
  • 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。
tup=()
print(type(tup))
  • 非空元组至少有一个逗号
tup=(1,)
print(type(tup))
  • 元组定义不加括号也会被认作元组
tup1 = 0,
print(type(tup1))

tup= 1,2,3,4,5
print(type(tup))
  • 可以批量赋值,但要考虑变量个数对应
a,b,c,d,e = tup
print(a,b,c,d,e)

tup= 1,2,3,4,5
  • 通过再参数前加*可以实现一次性取值,这种情况可以不一一对应 # *只能出现一次,否则无法定位位置 # 多个值则返回值为列表[] # *取值的操作对列表[]和字符串’'都可以使用,返回值都是列表[]
a,b,*c = tup
d,*e,f = tup
*g,h,i = tup
print(a,b,c)
print(d,e,f)
print(g,h,i)

2. 字典 {}

  • 列表存储数据的性能很好,列表查询的性能比较差
  • 字典存储数据的性能很差,字典查询的性能比较好
  • 字典是存储对象的容器
  • 字典中每一个元素都有自己的名字,可以实现快速的查询
  • 字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中

注意:

  • 字典中的value可以是任意对象
  • 字典的key可以是任意的不可变对象
  • 字典的键值key是不能重复的,如果重复,后边的会替换掉前边的
d = {'name': '孙老湿', 'age': 39, 'sex': '男'}
print(d,type(d))
# 通过[key]的形式获得键值
print(d['name'],d['age'],d['sex'])

2.1 字典的创建

  • 直接定义
  • d = {‘name’: ‘孙老湿’, ‘age’: 39, ‘sex’: ‘男’}
  • 通过字典函数dict()定义
  • d = dict(name=‘孙老湿’, age=39, sex=‘男’)
  • 通过子序列定义
  • d = dict([(‘name’, ‘孙老湿’), (‘age’, 39), (‘sex’, ‘男’)])

2.2 字典的应用

  • 根据dict[key]获取字典当中的值,key一定要加引号[‘’]
  • 本身是字符串要加引号,本身是变量不要加引号
  • len()查询字典键值个数
  • in 检查字典中是否包含指定健
  • not in 检查字典中是否不包含指定健
  • 学会利用.get()函数
  • dict.get(key,自定义返回值)
# 不存在的键值会报错中断程序
print(d['n'])
# 用get函数查询错误的key会返回None,不会报错,更柔和
print(d.get('n','您输入的key不存在'))
print(d.get('n'))

2.3 修改字典

dict[key]添加

  • dict[key] = value
  • 如果key存在,则修改;如果key不存在,则添加

d.setdefault(key,value)添加

  • d.setdefault(key,value)
  • 如果对应的key已存在,则不返回值
  • 如果对应的key不存在,则添加到字典

通过dict1.update(dict2)更新字典

d1 = {'a':1,'b':2,'c':3}
d2 = {'e':1,'f':2,'c':3}
d1.update(d2)

通过del key[value]删除k-v

popitem()删除最后一对k-v

  • 空字典popitem会报错

pop(key[,default])删除k-v并返回删除掉的value

  • 一般会删除最后一个,删除后的元素以元组形式返回
d = dict(name='孙老湿', age=39, sex='男')
# d.popitem
# r = pop(key[,default])
# 通过键值删除key和对应的k-v,会将删除的value返回
r = d.pop('sex')
print(r)

通过sort()进行排序

list = list('123dfjas;dj;fjasd')
print('修改前',list)
list.sort(reverse=True)
print('修改后',list)

修改前 [‘1’, ‘2’, ‘3’, ‘d’, ‘f’, ‘j’, ‘a’, ‘s’, ‘;’, ‘d’, ‘j’, ‘;’, ‘f’, ‘j’, ‘a’, ‘s’, ‘d’]
修改后 [‘s’, ‘s’, ‘j’, ‘j’, ‘j’, ‘f’, ‘f’, ‘d’, ‘d’, ‘d’, ‘a’, ‘a’, ‘;’, ‘;’, ‘3’, ‘2’, ‘1’]

浅copy()

  • copy()只复制第一层,如果字典里边还有字典,或者可变对象,则不会被复制,从而导致,嵌套的对象的值改变,浅copy获得的列表的对应嵌套内容也改变了,不是真正的复制.
  • 真正的的复制应当满足, 复制出来的序列是可以随意修改,并不被原序列的变化所影响的.
list1 = ["a", "b", "c", [1, 2, 3]]
list2 = list1.copy()
list1[3].append(4)
print(list1, list2)
print(id(list1), id(list2))

[‘a’, ‘b’, ‘c’, [1, 2, 3, 4]] [‘a’, ‘b’, ‘c’, [1, 2, 3, 4]]
2639403312904 2639403311432

字典的遍历

  • keys() 返回所有键
  • values() 返回所有值
  • items() 返回所有k-v对
d = {'name': '孙老湿', 'age': 39, 'sex': '男'}
print(d.keys())
print(d.values())
print(d.items())
items的遍历
for k,v in d.items():
	print(k,'=',v)

dict_keys([‘name’, ‘age’, ‘sex’])
dict_values([‘孙老湿’, 39, ‘男’])
dict_items([(‘name’, ‘孙老湿’), (‘age’, 39), (‘sex’, ‘男’)])
name = 孙老湿
age = 39
sex = 男

集合 set()

  • 集合(set)是一个无序的不重复元素序列。可以使用大括号 { } 或者 set() 函数创建集合,
  • 注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
  • 集合中的元素与顺序无关
  • 集合中的元素不会重复,重复的都会被记做一个
s = {1,2,3,4}
print(s,type(s))
s = {6,3,4,8,4,4,4}
print(s,type(s))

{1, 2, 3, 4}
{8, 3, 4, 6}

  • 通过set([])可以将列表转换为集合,但是会自动去重
  • 通过set({})可以将字典转换为集合,但是会只包含key,且会去重
  • 因为set()本身无序,所以无法进行索引切片
  • 但可以通过转为list()进行取值或者根据索引排序
list1 = ['name','孙老湿', 'name', 39, 'sex', '男']
list2 = list(set(list1))
print(list2)
list2.sort(key=list1.index)
print(list2)

[39, ‘男’, ‘sex’, ‘name’, ‘孙老湿’]
[‘name’, ‘孙老湿’, 39, ‘sex’, ‘男’]

  • 集合支持add,remove,update,remove,pop,clear等函数命令,同字典
  • 集合的运算
  • 1.交集运算:&
    返回重复部分
    s1 = {1,2,3,4,5}
    s2 = {3,4,5,6,7}

result = s1 & s2
print(result)

  • 2.并集运算: |
    去重并返回所有的元素
    result = s1 | s2
    print(result)

  • 3.差集运算
    从前边集合中去除后边集合中的元素
    result = s1 - s2
    result1 = s2 - s1
    print(result,result1)

  • 4.异或集 ^
    去重,并返回两个自己中其他的元素
    result = s1 ^ s2
    print(result)

  • 5.<= 检查一个集合是否是另一个集合的子集(两者有可能相等)
    < 检查一个集合是否是另一个集合的真子集(两者肯定不相等)
    返回 True或False
    a = {1,2,3,4}
    b = {1,2,3,4,5}
    result = a < b
    print(result)

你可能感兴趣的:(Python零基础)