学习python第六天

序列

 字符串、元组、列表都是序列,他们的共同点有:

1.都可以通过索引获取每一个元素

2.第一个索引都是0 

3.都可以通过切片获取一个范围内的集合

4. 都有很多共同的运算符

不同点:

根据元素能否被改变可以分为可变序列和不可变序列

列表是可变序列;字符串和元组是不可变序列

可以作用于序列的一些运算符和函数:

“+”:将两个序列合并成一个序列

“*”:将序列内的元素复制多少遍

id(序列):获取该序列的唯一标识符

is和is not用于检测唯一标识符是否一致

A = [1,2,1]
B = [1,2,1]
print(A is B)
print(A is not B)

in 和 not in用于检测序列中是否包含某元素

C = "雨"
D= "下雨"
print(C in D)
print(C not in D)

del:用于删除一个或者多个对象

A = [1,2,1]
B = [1,2,1]
C = [1,2,3,4,5,6]
del A
del B[1:]
del C[:5:2]

序列之间相互转换的函数:

转换成列表:list()

转换成元组:tuple()

转换成字符串:str()

max 和min:输出传入内容的最大值和最小值(传入的内容可以直接是一个序列,也可以一堆数)(此时如果传入一个空对象,就会报错,我们可以用函数里面的default参数进行处理)

len:用于计算可变序列的长度(有长度限制,32位要求小于2的31次方-1,64位要求小于2的63次方-1)

sum(序列,start):求一个序列的和,start是用来指定第一个参数是多少

sorted(序列,revers=False,key):

对序列内容进行排序然后返回一个新的序列,原来序列不变,revers默认为False,如果revers=True的话,结果会再原来的基础上在进行反转,变成从大到小排序,key是可以传入一个函数,此时会先将元素挨个传入函数中,然后再对所得结果进行排序

列表中的sort和sorted的区别:sort方法只能处理列表,而且是对列表本身进行改变的,而sorted可以处理任何序列,并且是返回一个新的序列,不会改变原来序列

reversed:返回一个序列的反向迭代器对象

all函数:用来判断序列中是否所有元素都为真

any函数:用来判断序列中是否有元素为真

  

enumerate(start)函数:用于返回一个枚举对象,它的功能就是将可迭代对象中的每个元素及从0开始的序号共同构成一个二元组的列表。(start可以控制序号从多少开始)

zip函数:用于创建一个聚合多个可迭代对象的迭代器。它会将作为参数传入的每个可迭代对象的每个元素依次组合成元组,即第ⅰ个元组包含来自每个参数的第ⅰ个元素(当传入的序列的长度不一致时,他会以最短的序列的长度为准)

解决zip会舍弃长度比较长的序列的元素这个问题,我们可以使用itertools模块的zip_longest方法

map函数:会根据提供的函数对指定的可迭代对象的每个元素进行运算,并将返回运算结果的迭代器。 (传入的序列的长度不一致时,他会以最短的序列的长度为准)

filter函数:会根据提供的函数对指定的可迭代对象的每个元素进行运算,并将运算结果为真的元素,以迭代器的形式返回: 

 迭代器和可迭代对象:

一个迭代器肯定是一个可迭代对象

最大区别:可迭代对象可以重复使用而迭代器则是一次性的

iter函数:将一个可迭代对象,转换成一个迭代器

next(iterable[, default])函数:返回迭代器的下一个项目,要和生成迭代器的 iter() 函数一起使用

terable -- 可迭代对象,default -- 可选,用于设置在没有下一个元素时返回该默认值,如果不设置,又没有下一个元素则会触发 StopIteration 异常。

   字典

字典的五种创建方法:

a = {"吕布":"口口布","关羽":"关习习","刘备":"刘baby"}
b = dict(吕布="口口布",关羽 = "关习习",刘备="刘baby")
c = dict([("吕布","口口布"),("关羽","关习习"),("刘备","刘baby")])
d = dict({"吕布":"口口布","关羽":"关习习","刘备":"刘baby"})
e = dict({"吕布":"口口布","关羽":"关习习"},刘备 = "刘baby")
f = dict(zip(["吕布","关羽","刘备"],["口口布","关习习","刘baby"]))
print(a == b == c == d == e ==f)

增:

fromkeys(iterable[,values]):可以使用iterable指定的可迭代对象创建一个新的字典,并且初始化为values参数指定的值

g = dict.fromkeys("ascd",1)
print(g)

删:

pop(键):删除对应键的字典元素

e = dict({"吕布":"口口布","关羽":"关习习"},刘备 = "刘baby")
e.pop("吕布")
print(e)

popitem:在python3.7之前是随机删除一个字典元素,python3.7之后,是删除最后添加进来的字典元素

f = dict(zip(["吕布","关羽","刘备"],["口口布","关习习","刘baby"]))
f.popitem()
print(f)

del函数也可以用来删除字典元素

f = dict(zip(["吕布","关羽","刘备"],["口口布","关习习","刘baby"]))
del f["刘备"]

del字典名:直接删除整个字典

字典.clear():删除字典内的所有元素

改:

直接通过键值进行查找:

f = dict(zip(["吕布","关羽","刘备"],["口口布","关习习","刘baby"]))
f["刘备"] = "111"

update方法:支持一次修改多个,可以直接穿多个值,或者传入一个序列

f = dict(zip(["吕布","关羽","刘备"],["口口布","关习习","刘baby"]))
f.update(丈夫="222")
f.update({"吕布":"口口1布","关羽":"关习2习"})

查:

直接使用键值进行查询(如果字典里面没有该元素时,会直接报错):

f = dict(zip(["吕布","关羽","刘备"],["口口布","关习习","刘baby"]))
print(f["刘备"])

get(default)方法:可以处理查询字典里没有的元素会报错的问题


f = dict(zip(["吕布","关羽","刘备"],["口口布","关习习","刘baby"]))
g = f.get("lisan","没有该元素")
print(g)

setdefault方法:查询字典中的某元素,如果有就返回值,如果没有就将查询的元素添加进去

f = dict(zip(["吕布","关羽","刘备"],["口口布","关习习","刘baby"]))
f.setdefault("张飞","小飞飞")
print(f)

items、keys、values方法:dict.keys()、dict.values() 和 dict.items() 返回的都是视图对象( view objects),提供了字典实体的动态视图,这就意味着字典改变,视图也会跟着变化。视图对象不是列表,不支持索引,可以使用 list() 来转换为列表。我们不能对视图对象进行任何的修改,因为字典的视图对象都是只读的。

f = dict(zip(["吕布","关羽","刘备"],["口口布","关习习","刘baby"]))
print(f.keys())
print(f.values())
print(f.items())

copy:浅拷贝(深拷贝父对象(一级目录),子对象(二级目录)不拷贝,子对象是引用)

a = {"1":1,"2":2,"3":3,"4":[1,2]}
b = a.copy()
a["1"] = 4
a["4"].remove(1)
print(a)
print(b)

list(字典名):将字典的所有键生成一个列表

list(字典名.values):将字典的所有值生成一个列表

a = {"1":1,"2":2,"3":3,"4":[1,2]}
print(list(a))
print(list(a.values()))

in和not in:看元素是否在字典中,是跟键做的比较


a = {"1":1,"2":2,"3":3,"4":[1,2]}

print("1" in a)
print("2" not in a)

iter:

将一个可迭代对象,转换成一个迭代器

next(iterable[, default])函数:返回迭代器的下一个项目,要和生成迭代器的 iter() 函数一起使用

terable -- 可迭代对象,default -- 可选,用于设置在没有下一个元素时返回该默认值,如果不设置,又没有下一个元素则会触发 StopIteration 异常。

字典嵌套:

#如果是两个字典嵌套,那么修改都需要使用键
a = {"吕布":{"语文":80,"数学":90},"关羽":{"语文":83,"数学":99}}
print(a)
a["吕布"]["语文"]=100
print(a)
#如果是一个字典一个列表嵌套,那么修改时字典使用键列表使用下标
b = {"吕布":[22,11,33],"关羽":[11,66,88]}
print(b)
b["关羽"][0] = 99
print(b)

字典推导式:

 

#键和值反转
a = {"a":1,"b":2,"c":3}
b = {k:v for v,k in a.items()}
print(b)
c = {b:ord(b) for b in "asdf" if ord(b)>100}
print(c)

  • 35
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值