Python学习之旅—Day06(字符串+字典+列表重点方法)

前言:

本篇博客主要针对字符串,字典和列表中的一些容易忽略的重点方法进行整理,以期进一步夯实大家的基础。



【001】字符串方法——isspace()方法

isspace()方法主要检测字符串是否只由空格组成。我们通过如下的实际例子来查看该方法:

str1 = "  "
print(str1.isspace())

str2 = "cisco   123"
print(str2.isspace())

str3 = " #"
print(str2.isspace())

可以看到isspace()方法仅仅检测字符串是否只由空格组成,否则都返回False。

【002】我们知道值为False的类型有如下结果:0,‘ ‘,Fasle,None,[],{}.那么空集合是否是False的,我们一起来验证下。

这里要注意空集合是使用set()来表示,和空列表,空字典不同。

【003】集合set()中的方法——add方法

names = {‘龙哥‘,‘海角‘,‘老狗‘,‘成绩‘,‘小江‘,‘小高‘}
names.add(‘龙哥‘)
print(names)# 打印结果:{‘老狗‘, ‘小江‘, ‘成绩‘, ‘海角‘, ‘小高‘, ‘龙哥‘}由于集合set()中的值不可能重复,由于这里‘龙哥‘已经在集合中存在,所以这里仍然打印的是原来集合中的元素。

【004】差集,这里主要关注difference方法,注意该方法是集合set的独有方法,列表和字典没有该方法,要不然会报错。举例如下:

names = {‘龙哥‘,‘海角‘,‘老狗‘,‘成绩‘,‘小江‘,‘小高‘}
boys = [‘小高‘,‘海娇‘,‘小狗‘]
val = names.difference(boys)
print(val)
# 该方法主要寻找集合names中存在,列表boys中不存在的数据,打印结果如下:{‘龙哥‘, ‘小江‘, ‘成绩‘, ‘海角‘, ‘老狗‘},可以看到结果仍然为一个集合。如果我们想查找列表boys中存在,但是集合names中不存在的数据呢?val1 = boys.difference(name)我们发现会报错,原因是列表list并没有该方法:AttributeError: ‘list‘ object has no attribute ‘difference‘

【005】求交集——主要考察intersection方法

names = {‘龙哥‘,‘海角‘,‘老狗‘,‘成绩‘,‘小江‘,‘小高‘}
boys = {‘小高‘,‘海娇‘,‘小狗‘}

val = names.intersection(boys)
print(val)#打印结果:{‘小高‘}

【006】求并集—主要考察union方法

names = {‘龙哥‘,‘海角‘,‘老狗‘,‘成绩‘,‘小江‘,‘小高‘}boys = {‘小高‘,‘海娇‘,‘小狗‘}val = names.union(boys)print(val)#打印结果:{‘小江‘, ‘龙哥‘, ‘成绩‘, ‘海娇‘, ‘海角‘, ‘小高‘, ‘老狗‘, ‘小狗‘}

【007】判断是否无交集——isdisjoint,有交集返回False,无交集返回True 。继续看如下的例子:

names = {‘龙哥‘,‘海角‘,‘老狗‘,‘成绩‘,‘小江‘,‘小高‘}
boys = {‘海娇‘,‘小狗‘}
val = names.isdisjoint(boys)
print(val)

#由于names和boys没有交集,所有打印True.

我们继续来看下面的例子:

names = {‘龙哥‘,‘海角‘,‘老狗‘,‘成绩‘,‘小江‘,‘小高‘}
boys = {‘海娇‘, ‘老狗‘}
val = names.isdisjoint(boys)
print(val)#由于names和boys有交集,所有打印False.

【008】子集与父集:issubset和issuperset.

names = {‘龙哥‘,‘海角‘,‘老狗‘,‘成绩‘,‘小江‘,‘小高‘}
boys = {‘龙哥‘,‘老狗‘}
# 判断boys是否是names的子集,打印结果为True
val = boys.issubset(names)
print(val)

# 判断names是否是boys的父集,打印为True
val = names.issuperset(boys)print(val)

【009】删除集合元素——这里重点关注pop()方法,remove()方法,discard()方法

【01】pop()方法:从集合s中任意选择一个元素删除,并将这个值返回,但是不能制定删除的值。举例如下:

s6 = {"hello", "python", "hi", "you"}
print(s6)
a = s6.pop()
print(a)  # 打印 hello
print(s6) # 打印 {‘you‘, ‘hi‘, ‘python‘}

【02】remove()方法:删除集合s中的指定元素,如果指定的元素在集合s中不存在,那么会报错!看如下的例子:

s6 = {"hello", "python", "hi", "you"}
print(s6)
a = s6.remove("hello")
print(a)  # 打印None
print(s6) # 打印{‘python‘, ‘you‘, ‘hi‘}从打印结果中,我们可以分析出remove方法是直接针对集合S进行操作,它删除元素时不会返回任何值,如果使用一个值进行接收,会返回None另外如果我们删除集合中国不存在的元素,会报错,如下:
s6 = {"hello", "python", "hi", "you"}print(s6)a = s6.remove("spark")print(s6) 报错:KeyError: ‘spark‘

【03】discard()方法:该方法也可以删除指定元素,如果该元素存在则删除,若不存在则什么也不做。一起来看如下的例子:

s6 = {"hello", "python", "hi", "you"}
print(s6)
a = s6.discard("python")
print(a)  # 打印结果为None
print(s6) # 打印结果为 {‘you‘, ‘hello‘, ‘hi‘}

从上面分析可知,discard()方法和remove()方法类似,也可以实现指定元素的删除,并且是直接针对原始集合进行操作。如果指定删除的元素不存在怎么办?

s6 = {"hello", "python", "hi", "you"}
print(s6)
a = s6.discard("spark")
print(a)  # 打印结果为None
print(s6) # {‘you‘, ‘python‘, ‘hi‘, ‘hello‘}#通过打印结果分析可知,当制定删除的元素不存在时,discard()方法什么也不做。所以在实际中还是推荐使用该方法。

【010】说完集合的删除元素,下面我们来讨论如何往集合中添加元素,主要有2个方法,一个是add方法,该方法表示往集合中添加一项,另一个是update方法,该方法的参数接收一个可迭代对象,表示将该对象里面的所有元素逐个添加到集合中,我们一起来看下面的例子:

s = {"hello", "python", "hi", "you"}
print(s)
# 打印 {‘python‘, ‘hello‘, ‘you‘, ‘hi‘}
s.add("spark")
print(s)
# 打印 {‘python‘, ‘hello‘, ‘spark‘, ‘you‘, ‘hi‘}通过结果分析可知,add()方法一次只能接收一个参数,然后直接将该元素添加到集合中。下面我们来看看update()方法的使用:
s = {"hello", "python", "hi", "you"}
s.update("spark", "hadoop")
print(s)#打印结果如下:{‘o‘, ‘a‘, ‘s‘, ‘hello‘, ‘k‘, ‘hi‘, ‘python‘, ‘you‘, ‘r‘, ‘d‘, ‘h‘, ‘p‘}从结果分析可知:update()方法将"spark"和"hadoop"看作是一个可迭代的对象,然后依次迭代对象里面的元素,并将元素添加到集合中。所以我们看到结果是一个一个的字母,相当于循环遍历字符串"spark"和"hadoop",然后将里面的元素添加到集合中。我们再来看下面的例子:
s = {"hello", "python", "hi", "you"}
y = {"spark", "hadoop"}
s.update(y)
print(s)#通过结果分析可知,update后面是一个集合y,就是一个可迭代的对象,因此我们直接将集合y中的元素添加至集合s中。下面我们来尝试下将列表中的元素添加进集合s中:
s = {"hello", "python", "hi", "you"}
li = ["spark", "hadoop", 123, 456,123,123,(123,456)]
s.update(li)
print(s)#打印结果:{‘hi‘, 456, ‘spark‘, ‘hadoop‘, ‘you‘, (123, 456), ‘python‘, 123, ‘hello‘}

从上面的结果分析可知,update可以直接将一个列表中的元素批量添加进集合S中,而列表中可以嵌套元组,但是不能再嵌套列表或者集合,否则会报错:TypeError: unhashable type: ‘set‘,TypeError: unhashable type: ‘list‘.示例如下:

s = {"hello", "python", "hi", "you"}
li = ["spark", "hadoop", 123, 456,123,123,(123,456), {123, 456}]
s.update(li)
print(s)报错:TypeError: unhashable type: ‘set‘如果在列表中嵌套列表:
s = {"hello", "python", "hi", "you"}
li = ["spark", "hadoop", 123, 456,123,123,(123,456), [123, 456]]
s.update(li)
print(s)报错:TypeError: unhashable type: ‘list‘

【011】对称差集方法:symmetric_difference()方法和symmetric_difference_update()方法

所谓对称差集即是给定两个集合s1,s2;然后选取两个集合的差集,可以这么理解:设定在s1中存在而s2中不存在的元素集合为s3,设定在s2中存在但是在s1中不存在的元素集合为s4,所谓对称差集即为s3和s4的并集。我们一起来看下面的例子:

s1 = {‘spark‘, ‘hadoop‘, ‘hive‘, ‘kafka‘}
s2 = {‘hadoop‘, ‘python‘, ‘spark‘, ‘cisco123‘}
s3 = s1.symmetric_difference(s2)
s4 = s2.symmetric_difference(s1)
print(s3)  # 打印结果:{‘python‘, ‘hive‘, ‘kafka‘, ‘cisco123‘}
print(s4)  # 打印结果{‘hive‘, ‘python‘, ‘cisco123‘, ‘kafka‘}

下面我们再来关注symmetric_difference_update()方法,我们一起来看看如下的例子:

s1 = {‘spark‘, ‘hadoop‘, ‘hive‘, ‘kafka‘, "es", "ccnp"}
s2 = {‘hadoop‘, ‘python‘, ‘spark‘, ‘cisco123‘, "elk"}
s1.symmetric_difference_update(s2)
print(s1)  # 打印结果如下:{‘es‘, ‘kafka‘, ‘cisco123‘, ‘ccnp‘, ‘hive‘, ‘elk‘, ‘python‘}
print(s2)  # 打印结果如下:{‘elk‘, ‘spark‘, ‘hadoop‘, ‘python‘, ‘cisco123‘}


在讨论完毕集合set中的主要功能后,下面我们一起来看看字典中的重要功能。

【001】首先我们一起来探讨下字典中key的数据类型,如下,可以为整形,字符串,布尔型,以及元组,说白了key的数据类型为不可变类型,可变类型包括字典,列表和集合

dic = {
    ‘k1‘: ‘v1‘,
    2: ‘v1‘,
    False: ‘v1‘,
    (11, 22,33): ‘v1‘,
}

【002】Python 字典(Dictionary) get() 函数返回指定键的值,如果值不在字典中返回默认值。格式为:dict.get(key, default=None)

key -- 字典中要查找的键,default -- 如果指定键的值不存在时,返回该默认值值。

dic = {‘Name‘: ‘Zara‘, ‘Age‘: 27}

print ("Value : %s" %  dic.get(‘Age‘))
print ("Value : %s" %  dic.get(‘Sex‘, "Never"))

相比于在很多场合下使用dic[key],该方法虽然也可以直接返回字典对应的值,但是如果key不存在,会直接报错,所以推荐大家使用get()方法。

===============================================================================================================

本篇博客主要是在学习函数的基础上进行相关知识点的查漏补缺,后期将结合一些具体的习题来针对性地巩固这些知识!希望对大家有帮助,从下一篇博客开始,我将结合自己学习函数的经历重点梳理函数参数,闭包,装饰器等重点知识,希望能够对大家有帮助。

时间: 2024-10-24 13:41:28

Python学习之旅—Day06(字符串+字典+列表重点方法)的相关文章

python学习(4)--字符串格式化之format()方法

一.格式化字符串的函数 str.format()增强了字符串格式化的功能.通过 {} 和 : 来代替以前的 % . 其中format 函数可以接受不限个参数,位置可以不按顺序. str = "{date}.{filename}.{func_name}.{msg}".format( date = "2018-10-07", # 时间 filename = "test_farmat", # 文件名 msg = "content"

what's the python之基本运算符及字符串、列表、元祖、集合、字典的内置方法

计算机可以进行的运算有很多种,运算按种类可分为算数运算.比较运算.逻辑运算.赋值运算.成员运算.身份运算.字符串和列表的算数运算只能用+和*,字典没有顺序,所以不能进行算数运算和比较运算.比较运算中==比较的是值,is比较的是id.比较运算只能在同种类型下进行比较.字符串的比较是按照顺序依次进行比较.逻辑运算的顺序先后为要用括号来表示. 基本运算符如下: 算术运算 以下假设a=10,b=20 比较运算 以下假设a=10,b=20 赋值运算 逻辑运算  成员运算 身份运算 what's the 内

python基础深入(元组、字符串、列表、字典)

python基础深入(元组.字符串.列表.字典) 一.列表 1.追加 1 >>>list = [1,2,3,4] #用于在列表末尾添加新的对象,只能单个添加,该方法无返回值,但是会修改原来的列表. 2 >>>list.append(5) 3 >>>print(list) 4 [1, 2, 3, 4, 5] 2.统计 1 >>>list = [1,"a","b","c",1,4

180分钟的python学习之旅

最近在很多地方都可以看到Python的身影,尤其在人工智能等科学领域,其丰富的科学计算等方面类库无比强大.很多身边的哥们也提到Python非常的简洁方便,比如用Django搭建一个见得网站只需要半天时间即可,因此也吸引了我不小的兴趣.之前相亲认识过一个姑娘是做绿色环保建筑设计行业的,提过她们的建筑物的建模也是使用Python,虽然被女神给拒绝了,但学习还是势在必行的,加油. 这部分只涉及python比较基础的知识,如复杂的面向对象.多线程.通信等知识会放在之后的深入学习中介绍,因此整个学习过程也

python学习笔记2:字符串

python学习笔记2:字符串 总结:字符串是不可变变量,不能通过下标修改其值 字符串的方法都不会改变字符串原来的值,而是新生成一个字符串 一.3种写法--单引号,双引号,三引号 二.下标和切片 下标:字符串里每个字符所在的位置,也叫索引.strname[n] ,表示strname这个字符串的下标为n对应的字符的值. 切片:取字符串一个下标区间的值. strname[n:m],表示strname这个字符串,下标n到m这个区间内的值,注意n:m取值,顾前不顾后. 三.字符串遍历 in 和not i

python基础之数字、字符串、列表、元组、字典

第二天Python基础二: 1.运算符: 判断某个东西是否在某个东西里面包含: in  为真 not in  为假 (1).算术运算符: 运算符 描述 实例 + 加  表示两个对象相加 a + b输出结果30 - 减  表示一个数减去另一个数 a - b输出结果-10 * 乘  两个数相乘或是返回一个被重复若干次的字符串 a * b输出结果200 / 除  两个数相除 b / a 输出结果2 ** 幂  返回一个数的n次幂 3 ** 3 输出结果27 % 取余  返回除法的余数 b % a 输出

python 数据类型: 数字Nubmer / 字符串String / 列表List / 元组Tuple / 集合Set / 字典Dictionary

#python中标准数据类型 数字Nubmer 字符串String 列表List 元组Tuple 集合Set 字典Dictionary #单个变量赋值countn00 = '10'; #整数countn01 = '100.0' #浮点countn02 = "双权"; #字符串countn03 = '10'; #数字#print("整数 = "+countn00,"浮点 = "+countn01,"字符串 = "+countn0

Python学习笔记五:字符串常用操作,字典,三级菜单实例

字符串常用操作 7月19日,7月20日 ,7月22日,7月29日,8月29日,2月29日 首字母大写:a_str.capitalize() 统计字符串个数:a_str.count("x") 输出字符,不够的使用指定的字符补上,字符居中:a_str.center(50,"-") 判断字符串以什么结尾:a_str.endwith("xx") 将字符串中的tab转换为指定数目的空格:a_str.expandtabs(tabsize=30) 查找指定字符

Python学习之旅—Day07(生成器与迭代器)

前言 本篇博客主要专注于解决函数中的一个重要知识点--生成器与迭代器.不管是面试还是工作,生成器与迭代器在实际工作中的运用可以说是非常多,从我们第一天开始学习for循环来遍历字典,列表等数据类型时,我们就已经和生成器,迭代器打交道了!本篇博客从最基础的基本概念,例如容器,可迭代对象,生成器,迭代器的概念,到for循环是怎么工作的娓娓道来.希望本篇博客能够帮助大家切实掌握生成器与迭代器的使用与底层原理. 一.容器 容器是一种把多个元素组织在一起的数据结构,容器中的元素可以逐个地迭代获取,可以用in