python学习day7笔记

利用列表实现队列与堆栈的特征

1.队列(先进先出)
l = []

l.append(111)
l.append(222)
l.append(333)

print(l.pop(0))
print(l.pop(0))
print(l.pop(0))

2.堆栈(先进后出)
l = []

l.append(111)
l.append(222)
l.append(333)

print(l.pop())
print(l.pop())
print(l.pop())

字典以及它的内置方法

大括号括起来,内部可以存放多个元素
元素的表现形式是以K:V键值对形式
    K是对V的描述性信息,一般都是字符串
    	K不可变类型,且不能重复
        	整型,浮点型,字符串
        V可以是任意类型

d1 = {
    'username':'jason',
    'password':123,
    'hobby':['read','run']
}

K只要是不可变类型即可,同一个字典内可以混用

1.按key存取值:可存可取
d1['username'] = 'tony'
print(d1['age'])  # 键不存在 直接报错!!!
d1['age'] = 18  # 键存在则修改 不存在则新建

2.长度len,统计字典中键值对的个数
print(len(d1))  # 3

3.成员运算in和not in
print('jason' in d1)  # Flase
字典默认只暴露key,value不暴露,如果想取,一般只能通过key

4.删除
del d1['password']  # 键值对一起删除
d1.pop('password')  # 字典不能用索引
res = d1.pop('password')  # 123  pop弹出value

5.键keys(),值values(),键值对items()
print(d1.keys())  # 获取字典中所有的key,输出的可以看成是列表
print(d1.values())  # 获取字典中所有的value,输出的可以看成是列表
print(d1.items())  # 将items()的结果可以直接看成列表[]套小列表()

for k,v in d1.items():  # 解压赋值,结合for循环
    print(k,v)
    
6.循环
'''字典for循环只能获取到key'''
for i in d1:
    print(i)

字典常用的操作方法

第一种创建字典的方式
d2 = {'k1':'v1','k2':'v2'}  # dict({'k1':'v1','k2':'v2'})

第二种创建方式
res = dict(name='jason',pwd=123,hobby=['read','run'])
print(res)  # 输出 {'name':'jason','pwd':123,'hobby':['read','run']}

第三种创建方式
l = [
    ['username','jason'],
    ['password',123],
    ['hobby',['read','run']]
]
d = {}  # 先创建一个空字典
for i in l:  # for循环输出每个列表
    d[i[0]] = i[1]  # d['username'] = 'jason'
# 用 键存在则修改,键不存在则新建 的理论,直接全部套进字典

# 换一种用法
d = {}  
for k,v in l:  
    d[k] = v
    
# 再换一种 最精简方法
res = dict(l)



d1 = {
    'username':'jason',
    'password':123,
    'hobby':['read','run']
}

1.dict.get()  # 使用频率最为广泛
print(d1.get('key值'))  返回value值
# 好处:get方法不存在也不会报错 返回None(什么都没有)
print(d1.get('username','嘿嘿嘿'))  # 输出 jason
print(d1.get('age','嘿嘿嘿'))  # 输出 嘿嘿嘿
'''get方法还可以给第二个参数 键存在则不使用 键不存在则返回第二个参数'''

2.dict.clear()
d1.clear()  # 清空列表

3.dict.fromkeys()  # 快速生成一个字典
l = ['username', 'age', 'hobby']
res = dict.fromkeys(l,123)
print(res)  # 输出 {'username': 123, 'age': 123, 'hobby': 123}

4.dict.popitem()  # 弹出一组键值对
d1.popitem()
print(d1)  # 输出 {'username': 'jason', 'password': 123}

res = d1.popitem()
print(res)  # 输出 ('hobby', ['read', 'run'])

5.dict.setdefault()  # 重点
dd = {'name': 'jason', 'pwd': 123}
dd.setdefault('age', 18)  # 键不存在,则新建
res = dd.setdefault('name', 'egon')  # 键存在不修改,而是获取到键对应的值
print(dd,res)  # 输出 {'name': 'jason', 'pwd': 123, 'age': 18} jason

6.dict.update()  # 可有可无
dd = {'name': 'jason', 'pwd': 123}
dd.update({'age': 18})  # 键不存在,则新建
dd.update({'name': 'egon'})  # 键存在,则修改
print(dd)  # 输出 {'name': 'egon', 'pwd': 123, 'age': 18}

# 完全等于↓ 
dd['age'] = 18
dd['name'] = 'egon'

元组及元组内置方法

'''
元组  tuple
小括号括起来 括号内可以存放多个元素
元素与元素之间逗号隔开 元素可以是任意类型
	元组也可以简单地理解为是列表
	
	元组属于不可变类型
'''
# 类型转换与list一致,支持for循环的都可以

# 元组当内部只有一个元素的时候,逗号不能省略
t1 = (1)
print(type(t1))  # 输出 int
t2 = ('a')
print(type(t2))  # 输出 str

t1 = (1,)
print(type(t1))  # 输出 tuple
t2 = ('a',)
print(type(t2))  # 输出 tuple

元组优先要掌握的操作

1.按索引取值(正向取+反向取):只能取
t1 = (11, 22, 33)
t1[0] = 666
print(t1)  # 报错,因为元组内存地址不能修改

t1 = (11, 22, [11, 22])
t1[2].append(33)
print(t1)  # 输出t1 = (11, 22, [11, 22, 33]) 
# 如果元素是可变类型,那么元素值可以改

2.切片(顾头不顾尾,步长)
# 与字符串,列表一致

3.长度
len()

4.成员运算in和not in
# 与列表一致

5.循环
for i in(11, 22, 33):
    print(i)

集合(用的不多)

'''
集合 set
大括号括起来,内部可以存放多个元素
元素与元素之间逗号隔开(不是k:v键值对),元素只能是不可变类型

只有两种情况才会考虑使用集合,其他情况不要使用
	1.关系运算
		两个群体之间判断 交叉并集
	2.去重操作  # 集合天生去重,不保留顺序
		去除重复的元素
'''
# 定义空集合,需要使用关键字set
se = set()

集合操作方法

# 关系运算
a = {1,2,3,4,5,6,7,8}
b = {2,4,6,8,10}

如何求交集
>>> a.intersection(b)
>>> a & b  # a和b共同拥有的
如何求差集
>>> a.difference(b)
>>> a - b  # a相对b独有的
>>> b - a  # b相对a独有的
如何求并集
>>> a.union(b)
>>> a | b  # a和b所有拥有的
如何求对称差集
>>> a.symmetric.(b)
>>> a ^ b  # a和b都相对独有的

# 父集,子集
'''
a包含b
a是b的父集,b是a的子集
'''
上一篇:Beta冲刺-day7


下一篇:Day7-hive数据分析+echart信息展示