2.10 ,数据类型高级
2.10.1字符串高级:
字符串常见操作包括:
获取长度 |
len |
len函数可以获取字符串的长度。 |
查找内容 |
find |
查找指定内容在字符串中是否存在,如果存在就返回该内容在字符串中第一次出现的开始位置索引值,如果不存在,则返回1。 |
判断 |
startswith,endswith |
判断字符串是不是以谁谁谁开头/结尾。 |
计算出次数 |
count |
返回 str 在 start 和 end 之间 mystr 里面出现的次数。 |
替换内容 |
replace |
替换字符串中指定的内容,如果指定次数count,则替换不会超过count次。 |
切割字符串 |
split |
通过参数的内容切割字符串。 |
修改大小写 |
upper,lower |
将字符中的大小写互换。 |
空格处理 |
strip |
去空格。 |
字符串拼接 |
join |
字符串拼接 |
# 获取长度:len len函数可以获取字符串的长度。
#
# 查找内容:find 查找指定内容在字符串中是否存在,如果存在就返回该内容在字符串中第一次出现的开始位置索引值,如果不存在,则返回1。
#
# 判断:startswith,endswith 判断字符串是不是以谁谁谁开头/结尾。
#
# 计算出次数:count 返回 str 在 start 和 end 之间 mystr 里面出现的次数。
#
# 替换内容:replace 替换字符串中指定的内容,如果指定次数count,则替换不会超过count次。
#
# 切割字符串:split
# 修改大小写:upper,lower 将字符中的大小写互换。
#
# 空格处理:strip 去空格。
#
# 字符串拼接:join 字符串拼接
# 获取长度:len 长度
s = 'china'
print(len(s)) # 输出结果为5
# 查找内容:find
s1 = 'china'
print(s1.find('a')) # 输出结果为4
# 判断:startswith,endswith
s2 = 'china'
print(s2.startswith('c')) # 输入c是内容以c为开头的吗,是则输出True,不是则输出False
print(s2.endswith('a')) # 输入a是以内容a为结尾的吗,是则输出True,不是则输出False
# 计算出次数:count
s3 = 'aaabbbbb'
print(s3.count('a')) # 输出结果是3,是统计内容中a有多少个
# 替换内容:replace
s4 = 'cccddd'
print(s4.replace('c','d')) # 输出结果是dddddd,是将s4内容的c都替换成d然后输出
# 切割字符串:split
s5 = '1#2#3#4'
print(s5.split('#')) # 输出结果是['1', '2', '3', '4'],是把s5中的#去除
# 修改大小写:upper,lower
s6 = 'china'
print(s6.upper()) # 输出结果是CHINA,是将s6的内容全部转换成大写
s7 = 'CHINA'
print(s7.lower()) # 输出结果是china,是将s7的内容全部转换成小写
# 空格处理:strip
s8 = ' aa '
print(len(s8)) # 输出结果是8个长度
print(len(s8.strip())) # 输出结果是去除6个空格剩余2个a所以是两个长度
# 字符串拼接:join
s9 = 'a'
print(s9.join('hello')) # 输出结果是haealalao 一个个插入将a插入到h后面然后输出以此类推
2.10.2列表高级---添加:
列表的增删改查
添加元素:
添加元素有以下几个方法
append |
在末尾添加元素 |
insert |
在指定位置插入元素 |
extend |
合并两个列表 |
# append 追加 在列表的最后来添加一个对象/数据
figure_list = ['工藤新一','怪盗基德']
print(figure_list) # 输出结果是列表内容输出
figure_list.append('服部黑蛋')
print(figure_list) # 输出结果是['工藤新一', '怪盗基德', '服部黑蛋'] 把黑蛋添加到列表最后
# insert 插入
love_list = ['琴酒','贝尔摩德','基安蒂']
print(love_list) # 原列表输出
# index的值就是你想插入数据的那个下标
love_list.insert(1,'伏特加') # 我想把伏特加加入到琴酒后面从0开始计算也就是输入1即可添加
print(love_list) # 输出结果是['琴酒', '伏特加', '贝尔摩德', '基安蒂']
# extend 迭代
num_list = [1,2,3]
num1_list = [4,5,6]
num_list.extend(num1_list) # 迭代关系将num1得列表追加到num后面
print(num_list) # 输出结果是[1, 2, 3, 4, 5, 6]
2.10.3列表高级---修改:
# 首先创建一个城市的列表
city_list = ['北京','上海','深圳','武汉','西安']
print(city_list)
# 将列表中元素的值进行修改(例如修改武汉为南京)
city_list[3] = '南京' # 可以通过下标进行修改内容,注意下标是从0开始的,例如下面的从3开始修改武汉为南京
print(city_list) # 输出结果为['北京', '上海', '深圳', '南京', '西安']
2.10.4列表高级---查询:
查找元素:
所谓的查找,就是看看指定的元素是否存在,主要包含以下几个方法:
in 和 not in
python常用的查找方法为:
in (存在) ,如果存在那么结果为True,否则为False
not in (不存在),如果不存在那么结果True,否则为False
# in是判断某一个元素是否在某一个列表中
love_list = ['工藤新一','怪盗基德','服部黑蛋']
# 判断一下在控制台输入的我喜欢的那个人物 是否在列表中
love = input('请输出你喜欢的人物:')
if love in love_list:
print('在')
else:
print('不在')
# 输出:
# 请输出你喜欢的人物:服部黑蛋
# 在
# not in 判断某一个元素不在列表中
ball_list = ['篮球','足球']
# 在控制台上输入你喜欢的球类 然后判断是否不在这个列表中
ball = input('请输出你喜欢的球类:')
if ball not in ball_list:
print('不在')
else:
print('在')
# 输出结果:
# 请输出你喜欢的球类:台球
# 不在
2.10.5列表高级---删除:
类比生活中,如果某位同学调班了,那么就应该把这个同学的信息在姓名中删除,在开发中经常会用到删除这种功能。
列表常见的删除方法有:
del |
根据下标进行删除 |
pop |
删除最后一个元素 |
remove |
根据元素的值进行删除 |
# del 根据下标进行删除数据
# 应用场景,假如我们爬取的数据是我们不喜欢的可以通过下标来进行删除
a_list = [1,2,3,4,5]
# 假如我看3不顺眼想把3删除掉
del a_list[2] # 从0开始3对应的下标是2
print(a_list) # 输出结果为[1, 2, 4, 5]
# pop 删除最后一个元素
b_list = [1,2,3,4,5]
b_list.pop()
print(b_list) # 输出结果为[1, 2, 3, 4]
# remove 根据元素来删除列表中的数据、
c_list = [1,2,3,4,5]
c_list.remove(3) # 假如我不喜欢列表中的3我选中它进行删除
print(c_list) # 输出结果为[1, 2, 4, 5]
2.10.6 元组高级:
python的元组与列表类似,不同之处在于元组的元素不能修改,元组使用小括号,列表使用方括号。
a_tuple = (1,2,3,4)
print(a_tuple[0]) # 输出结果为下标1
print(a_tuple[1]) # 输出结果为下标2
# a_tuple[3] = 5 # 输出错误:因为元组不能和列表一样直接修改内容
# print(a_tuple)
# 如下列表测试
a_list = [1,2,3,4]
print(a_list)
a_list[2] = 9 # 将第二个下标替换成9
print(a_list) # [1, 2, 9, 4]
# 综上所述列表中的元素是可以被修改的,而元组中的元素不可以被修改
a_tuple = (5)
print(type(a_tuple)) # 输出结果为<class 'int'>
# 当元组中只有一个数据的时候 那么他是整型数据
# 如何让他显示元组数据类型呢,只需在数据后面加一个逗号即可
b_tuple = (5,)
print(type(b_tuple)) # 输出结果为<class 'tuple'>
2.10.7切片:
切片是指对操作对象截取其中一部分的操作。字符串,列表,元组,都支持切片操作。
切片的语法:[ 起始:结束:步长 ],也可以简化使用[ 起始:结束]
注意:选取的区间从"起始"位开始,到"结束"位的前一位结束(不包含结束位本身),步长表示选取间隔。
# 如下我们写一个字符串
s = 'helao,world'
# 在切片中直接写一个下标,如下输入则输出h,反之输入1则输出e
print(s[0])
# 左闭右开区间 包含左边的数据不包含右边的数据
print(s[0:4]) # 输出结果hell 也就是输出下标0,1,2,3
# 从起始的值开始 一直输入到最后 如果将1换成0则完整输出
print(s[1:]) # 输出结果为ello,world
# 是下标为0的索引的元素开始 一直到第二参数为止 遵循左闭右开区间
print(s[:5]) # 输出结果是hello 则:后面下标输入多少则就输出到对应的多少
# hello,world
# 012345678910 对应下标
# 从下标为0开始 到下标为6结束 每次增长两个长度
print(s[0:6:2]) # 输出结果为hlo
2.10.8字典的高级---查询:
# 定义一个字典
person = {'name':'冷影玺','age':'18'}
1---1
# 访问person的name和age
print(person['name']) # 输出结果为冷影玺
print(person['age']) # 输出结果为18
# 获取字典中不存在的key的时候会怎么样呢
# print(person['666']) 会报错KeyError: '666'显示字典没有这个
# 不能使用.的方式来访问字典的数据 如下
# print(person.name) 输出失败
2---2
# 但是可以使用.get来获取 如下所示
print(person.get('name')) # 输出冷影玺
print(person.get('age')) # 输出18
# 使用.get的方式来获取字典中不存在的key值会怎么样呢
print(person.get('666')) # 虽然不会报错但是会输出None显示没有这个值
2.10.9字典得高级---修改:
# 定义一个字典
person = {'name':'工藤新一','age':'18'}
# 修改之前的字典
print(person) # 输出{'name': '工藤新一', 'age': '18'}
# 修改name的值为怪盗基德
person['name'] = '怪盗基德'
# 修改之后的输出字典
print(person) # 输出{'name': '怪盗基德', 'age': '18'}
2.10.10字典得高级---添加:
# 定义一个字典
person = {'name':'冷影玺'}
print(person)
# 给字典添加一个新的key value
# 如果使用变量名字['键'] = 数据时 这个键如果在字典中不存在 那么就会变成新增元素
person['age'] = 18
print(person) # 输出{'name': '冷影玺', 'age': 18}添加成功
# 如果这个键存在 那么就会变成这个元素
person['name'] = '冷影玺666'
print(person) # 输出 {'name': '冷影玺666', 'age': 18} 进行替换成功
2.10.11字典得高级---删除:
# del
# (1) 删除字典中指定的某一个元素
person = {'name':'工藤新一','age':'18'}
# 删除之前输出
print(person)
# 删除之后输出
del person ['name']
print(person) # 输出结果为{'age': '18'}删除成功
# (2) 删除整个字典
del person # 删除整个字典
print(person) # 输出结果为 NameError: name 'person' is not defined
# clear
# (3) 清空字典 但是保留字典结构
person.clear()
print(person) # 输出结果为{} 已经清空
2.10.12字典得高级---遍历:
# 遍历就是数据一个一个的输出
person = {'name':'工藤新一','age':18,'sex':'男'}
# (1) 遍历字典的key
# 字典.keys() 方法 获取的字典中所有的key值 key是一个变量的名字 我们可以随便起
for key in person.keys():
print(key)
# 输出结果
# name
# age
# sex
# (2) 遍历字典的value
# 字典values.() 方法 获取字典中所有的value值 value是一个变量的名字 我们可以随便起
for value in person.values():
print(value)
# 输出结果
# 工藤新一
# 18
# 男
# (3) 遍历字典的key和value
for key,value in person.items():
print(key,value)
# 输出结果
# name 男
# age 男
# sex 男
# 如果我们值定义一个可以使用items方法呢
for key in person.items():
print(key)
# 输出结果----这样的形式虽然可以输出但是输出的是项/元素
# ('name', '工藤新一')
# ('age', 18)
# ('sex', '男')
# (4) 遍历字典的项/元素
for item in person.items():
print(item)
# 输出结果
# ('name', '工藤新一')
# ('age', 18)
# ('sex', '男')
2.11,函数
2.11.1函数的定义和调用:
定义函数格式:
def 函数名():
代码
函数的调用格式:
f(1)
示例:
# 定义函数
def f1():
print('我是一个名侦探')
print('我被琴酒喂了一颗ATX4869')
print('我是工藤新一')
# 调用函数
f1()
# 输入两遍调用两次即可
f1()
2.11.2函数的参数:
# 使用函数来计算1+2的值
def sum():
a = 1
b = 2
c = a + b
print(c)
sum() # 输出3
# 换一种方法
def sum(a,b):
c = a + b
print(c)
# (1)位置参数 按照位置一一对应的关系进行传递参数
sum(1,2) # 输出3
# 如果sum(1,2)变成100和200呢会不会打印
sum(100,200) # 输出300
# (2)关键字传参 但是不推荐使用
sum(b = 200, a = 100) # 输出300
# 定义函数的时候,sum(a,b) 我们称a和b为形式参数 简称形参
# 调用函数的时候,sum(1,2) 我们称1和2为实际参数 简称实参
# 调用参数的顺序
def test(a,b):
print(a,b)
test(1,2) # 位置参数
1 2
test(b=1,a=2) # 关键字参数
2 1
定义时小括号中的参数,用来接收参数用的,称为 "形参"
调用时小括号中的参数,用来传递给函数用的,称为 "实参"
2.11.3函数的返回值:
# 案例
我给柯南10元钱,让他去买一个冰淇淋。
这个例子中,10块钱是我给柯南的,就相当于调用函数时传递到参数,
让柯南买冰淇淋这个事情最终的目标,我需要让柯南把冰淇淋带回来,
此时冰淇淋就是返回值
# 返回值的关键字时return,存在函数中
def kenan():
return '冰淇淋'
# 使用一个变量food来接受返回值
food = kenan()
print(food) # 输出结果为冰淇淋
# 案例练习
# 定义一个函数 然后让函数计算两个数值 并且返回这个计算之后的结果
def sum(a,b):
c = a + b
return c
m = sum(100,200)
print(m) # 输出结果为300
2.11.4函数的局部变量和全局变量:
局部变量:
# 局部变量,就是在函数内部内部定义的变量。
# 特点:其作用范围是这个函数内部,即只能在这个函数中使用,在函数的外部是不能使用。
def f1():
# 在函数内部定义的变量 我们叫做局部变量 如下变量a在内部
a = 1
print(a)
f1() # 输出为1
# print(a)
全局变量:
# 全局变量,定义在函数外部的变量 我们称之为全局变量
# 特点:可以在函数的外部使用,也可以在函数的内部使用
a = 1
print(a)
def f1():
print(a)
f1()
# 输出2个1
# 根据上述所示我们都使用全局变量不就ok了 事实上是不可以的
# 因为在满足条件的情况下 要使用作用域最小的那个变量范围