一、简介
1、目标
2、知识点回顾
Python 中数据类型可以分为 数字型 和 非数字型 数字型
- 整型 (
int ) - 浮点型(
float ) - 布尔型(
bool )
- 真
True 非 0 数 —— 非零即真 - 假
False 0 * 复数型 (complex ) - 主要用于科学计算,例如:平面场问题、波动问题、电感电容等问题
非数字型
3、非数字型变量的特点
在 Python 中,所有 非数字型变量 都支持以下特点:
- 都是一个 序列
sequence ,也可以理解为 容器 - 取值
[] - 遍历
for in - 计算长度、最大/最小值、比较、删除
- 链接
+ 和 重复 * - 切片
二、字符串
字符串:在 单引号 和 双引号 以及三个三引号和三个双引号的内容
- 字符串的输入和输出
- input()所有接收的内容都是字符串
- 字符串的输出:%s
name='张三'
print('这个人的名字叫:%s'%name)
结果:
这个人的名字叫张三
1、下标索引
如果想要获取字符串中某个字符,那么通过下标索引的方式
str1='abcdesf'
print(str1[0])
print(str1[4])
结果:
a e
2、切片
(1)作用
切片 方法适用于 字符串、列表、元组
- 切片 使用 索引值 来限定范围,从一个大的 字符串 中 切出 小的 字符串
- 列表 和 元组 都是 有序 的集合,都能够 通过索引值 获取到对应的数据
- 字典 是一个 无序 的集合,是使用 键值对 保存数据
字符串[开始索引:结束索引:步长]
注意:
- 指定的区间属于 左闭右开 型
[开始索引, 结束索引) => 开始索引 >= 范围 < 结束索引 从 起始 位开始,到 结束 位的前一位 结束(不包含结束位本身) - 从头开始,开始索引 数字可以省略,冒号不能省略
- 到末尾结束,结束索引 数字可以省略,冒号不能省略
- 步长默认为
1 ,如果连续切片,数字和冒号都可以省略
(2)索引的顺序和倒序
- 在 Python 中不仅支持 顺序索引,同时还支持 倒序索引
- 所谓倒序索引就是 从右向左 计算索引
(3)实例
num_str = "0123456789"
print(num_str[2:6])
print(num_str[2:])
print(num_str[:6])
print(num_str[:])
print(num_str[::2])
print(num_str[1::2])
print(num_str[1:-1])
print(num_str[2:-1])
print(num_str[-2:])
print(num_str[::-1])
结果
3、find
检测字符串a是否包含在字符串b中,如果包含,则返回开始的索引值,否则返回-1
find:字符串a是否包含在b中
语法:
b.find(a,start=0,len(b))
^
起始位置(索引)
str='asdgajljflgasajfdsfj'
str1='ga'
print(len(str1))
print(str.find(str1,0,len(str)))
结果:在第三位找到(0,1,2,3)
3
4、index
index和find用法一直,唯一不同的就是当查找的子序列不在另一个字符串中的时候,会报异常
用法:
b.index(a,start=0,len(b))
^
起始位置(索引)
str='asdgajljflgasajfdsfj'
str1='ga'
print(str.index(str1,0,len(str)))
结果:在第三位找到(0,1,2,3)
3
5、count
表示子序列在另一个字符串中出现的次数 用法:
a.count(b,start=0,end=len(a))
str='asdgajljflgasajfdsfj'
str1='ga'
print(str.count(str1,0,len(str)))
结果
2
6、其他介绍
三、列表
1、列表的定义
List (列表) 是 Python 中使用 最频繁 的数据类型,在其他语言中通常叫做 数组- 专门用于存储 一串 信息
- 列表用
[] 定义,数据 之间使用 , 分隔 - 列表的 索引 从
0 开始
- 索引 就是数据在 列表 中的位置编号,索引 又可以被称为 下标
创建一个列表,只要把 逗号分隔 的 不同的数据项 使用 方括号 括起来即可。如下所示:
a、定义列表变量:
list1 = ['physics', 'chemistry', 1997, 2000]
list2 = [1, 2, 3, 4, 5 ]
list3 = ["a", "b", "c", "d"]
b、取列表元素的值
print(list[0])
print(type(list[0]))
注意:从列表中取值时,如果 超出索引范围,程序会报错
2、列表常用操作类型
3、增加元素
(1)append
把新的元素追加到了列表的末尾
name_list=['杨浩','单赛','静初']
name_list.append('杨威')
print(name_list)
name_list.append('魏富强')
print(name_list)
结果:
['杨浩', '单赛', '静初', '杨威']
['杨浩', '单赛', '静初', '杨威', '魏富强']
(2)extend
把新的列表添加到原来的列表中,把新的列表中的元素添加到了原来列表的末尾
name_list=['杨浩','单赛','静初']
name_new=['易怀玲','朱艳涛']
name_list.extend(name_new)
print(name_list)
结果:
['杨浩', '单赛', '静初', '易怀玲', '朱艳涛']
(3)insert
(index,new) 在列表的指定位置,添加新元素,如果添加的是一个字符串,那么就在原来的列表中添加这个元素,如果添加的是一个列表, 那么在指定的位置把整个列表添加进去
name_list=['杨浩','单赛','静初']
name_new=['易怀玲','朱艳涛']
name_list.insert(1,'董泽坤')
print(name_list)
name_list.insert(1,name_new)
print(name_list)
结果:
['杨浩', '董泽坤', '单赛', '静初']
['杨浩', ['易怀玲', '朱艳涛'], '董泽坤', '单赛', '静初']
4、删除元素
(1)del
根据下标索引,删除元素
name_list=['杨浩','单赛','静初']
del name_list[0]
print(name_list)
结果:
['单赛', '静初']
(2)pop
默认情况下,删除最后一个元素,也可以删除指定位置的元素
name_list=['杨浩','单赛','静初']
name_list.pop()
print(name_list)
name_list=['杨浩','单赛','静初']
name_list.pop(1)
print(name_list)
结果:
['杨浩', '单赛']
['杨浩', '静初']
(3)remove
根据列表中元素的值进行删除
name_list=['杨浩','单赛','静初','董泽坤']
name_list.remove('董泽坤')
print(name_list)
5、修改元素
获取列表里的列表的元素 语法:list[index][index]
name_list=['杨浩','单赛','静初']
print(name_list[1][0])
结果:
单
修改列表中的元素 语法:list[index]=new
name_list=['杨浩','单赛','静初']
name_list[1]='朱艳涛'
print(name_list)
结果:
['杨浩', '朱艳涛', '静初']
6、查询元素
(1)index
查看元素是否在列表中,如果不在,则抛出异常
name_list=['杨浩','单赛','静初']
name_index=name_list.index('静初',0,len(name_list))
print(name_index)
结果:
2
(2)count
数据在列表中出现的次数
语法:列表.count(数据)
name_list=['杨浩','单赛','静初']
name_count=name_list.count('静初')
print(name_count)
结果:
1
(3)len
计算容器中元素个数
语法:len(item)
name_list=['杨浩','单赛','静初','董泽坤']
print(len(name_list))
结果:
4
(4)if 数据 in 列表
判断元素是否在列表中
- in :如果元素存在列表中,那么返回true,否则返回false
- not in :与in相反
name_list=['杨浩','单赛','静初','董泽坤']
if '杨洁' in name_list:
print('存在')
else:
print('不存在')
结果:
存在
7、 排序
(1)sort
将list按特定顺序重新排列,默认从小到大,参数 reverse=True 可改为倒序,从大到小。
(2)reverse
将list倒置
list=[2,5,1,6,8,2,0]
list.sort(reverse=True)
print(list)
list.reverse()
print(list)
结果:
[8, 6, 5, 2, 2, 1, 0]
[0, 1, 2, 2, 5, 6, 8]
8、循环遍历
遍历 就是 从头到尾 依次 从列表中获取数据
在 循环体内部 针对 每一个元素,执行相同的操作
在 Python 中为了提高列表的遍历效率,专门提供的 迭代 iteration 遍历
使用 for 就能够实现迭代遍历
for name in name_list:
循环内部针对列表元素进行操作
print(name)
应用场景
尽管 Python 的 列表 中可以 存储不同类型的数据,但是在开发中,更多的应用场景是
- 列表 存储相同类型的数据
- 通过 迭代遍历,在循环体内部,针对列表中的每一项元素,执行相同的操作
四、元组
1、 元组的定义
Tuple (元组)与列表类似,不同之处在于元组的 元素不能修改- 元组 表示多个元素组成的序列
- 元组 在
Python 开发中,有特定的应用场景 - 用于存储 一串 信息,数据 之间使用
, 分隔 - 元组用
() 定义 - 元组的 索引 从
0 开始 * 索引 就是数据在 元组 中的位置编号
写法:
info_tuple = ("zhangsan", 18, 1.75)
创建空元组
info_tuple = ()
元组中只包含一个元素时,需要"在元素后面添加逗号"
info_tuple = (50, )
2、元组常用操作
- 在
ipython3 中定义一个 元组,例如:info = () - 输入
info. 按下 TAB 键,ipython 会提示 元组 能够使用的函数如下:
info.count info.index
tuple1=()
print(type(tuple1))
(1)访问元组
通过下标索引访问,下标从0开始
tuple1=('张三','wang',23,56,3.4)
print(tuple1)
print(tuple1[0])
print(tuple1[2])
结果:
('张三', 'wang', 23, 56, 3.4)
张三
23
(2)修改元组
元组中的元素值是不允许修改的,但是可以对元组进行拼接
tuple1=('张三','wang',23,56,3.4)
tuple1=(1,2,3)
tuple2=(4,5,6)
tuple3=tuple1+tuple2
print(tuple3)
结果:
(3)删除元组
元组中的元素值是不允许删除的,但是可以删除整个元组 元组被删除后,输出变量会有异常信息
del tuple3
3、循环遍历
- 在
Python 中,可以使用 for 循环遍历所有非数字型类型的变量:列表、元组、字典 以及 字符串 - 提示:在实际开发中,除非 能够确认元组中的数据类型,否则针对元组的循环遍历需求并不是很多
- 取值 就是从 元组 中获取存储在指定位置的数据
- 遍历 就是 从头到尾 依次 从 元组 中获取数据
(1)语法
for item in info:
循环内部针对元组元素进行操作
print(item)
实例:
方式一
tuple1=('张三','wang',23,56,3.4)
for temp in tuple1:
print(temp)
方式二
tuple1=('张三','wang',23,56,3.4)
i=0
while i<len(tuple1):
print(tuple1[i])
i+=1
结果是一样
(2)应用场景
- 尽管可以使用
for in 遍历 元组 - 但是在开发中,更多的应用场景是:
- 函数的 参数 和 返回值,一个函数可以接收 任意多个参数,或者 一次返回多个数据
- 有关 函数的参数 和 返回值,在后续 函数高级 给大家介绍
- 格式字符串,格式化字符串后面的
() 本质上就是一个元组 - 让列表不可以被修改,以保护数据安全
info = ("zhangsan", 18)
print("%s 的年龄是 %d" % info)
4、元组和列表之间的转换
list(元组)
tuple(列表)
五、 字典
1、 字典的定义
dictionary (字典) 是 除列表以外 Python 之中 最灵活 的数据类型- 字典同样可以用来 存储多个数据
- 通常用于存储 描述一个
物体 的相关信息 - 和列表的区别
- 列表 是 有序 的对象集合
- 字典 是 无序 的对象集合
- 字典用
{} 定义 - 字典使用 键值对 存储数据,键值对之间使用
, 分隔
- 键
key 是索引 - 值
value 是数据 * 键 和 值 之间使用 : 分隔 - 键必须是唯一的
- 值可以取任何数据类型,但 键 只能使用 字符串、数字或 元组
用法:
xiaoming = {"name": "小明",
"age": 18,
"gender": True,
"height": 1.75}
2 、字典常用操作
- 在
ipython3 中定义一个 字典,例如:xiaoming = {} - 输入
xiaoming. 按下 TAB 键,ipython 会提示 字典 能够使用的函数如下:
In [1]: xiaoming.
xiaoming.clear xiaoming.items xiaoming.setdefault
xiaoming.copy xiaoming.keys xiaoming.update
xiaoming.fromkeys xiaoming.pop xiaoming.values
xiaoming.get xiaoming.popitem
3.3 循环遍历
(1)语法
遍历 就是 依次 从 字典 中获取所有键值对
可以通过for循环获取字典中的元素(k-v)
- keys():获取字典中所有的key键
- values():获取字典中所有的value值
- items():获取字典中的key-value键值对
dict={'name':'jim','id':1001,'address':'北京','age':19}
print(dict['name'])
print(dict.get('age',15))
for k in dict.keys():
print(k)
for v in dict.values():
print(v)
for k in dict.items():
print(k)
(2) 应用场景
- 尽管可以使用
for in 遍历 字典 - 但是在开发中,更多的应用场景是:
- 使用 多个键值对,存储 描述一个
物体 的相关信息 —— 描述更复杂的数据信息 - 将 多个字典 放在 一个列表 中,再进行遍历,在循环体内部针对每一个字典进行 相同的处理
card_list = [{"name": "张三",
"qq": "12345",
"phone": "110"},
{"name": "李四",
"qq": "54321",
"phone": "10086"}
]
六、公共方法
1、 Python 内置函数
Python 包含了以下内置函数:
函数 | 描述 | 备注 |
---|
len(item) | 计算容器中元素个数 | | del(item) | 删除变量 | del 有两种方式 | max(item) | 返回容器中元素最大值 | 如果是字典,只针对 key 比较 | min(item) | 返回容器中元素最小值 | 如果是字典,只针对 key 比较 | cmp(item1, item2) | 比较两个值,-1 小于/0 相等/1 大于 | Python 3.x 取消了 cmp 函数 |
注意
- 字符串 比较符合以下规则: “0” < “A” < “a”
2、切片
切片 | “0123456789”[::-2] | “97531” | 字符串、列表、元组 |
---|
描述 | Python 表达式 | 结果 | 支持的数据类型 |
- 切片 使用 索引值 来限定范围,从一个大的 字符串 中 切出 小的 字符串
- 列表 和 元组 都是 有序 的集合,都能够 通过索引值 获取到对应的数据
- 字典 是一个 无序 的集合,是使用 键值对 保存数据
3、运算符
运算符 | Python 表达式 | 结果 | 描述 | 支持的数据类型 |
---|
+ | [1, 2] + [3, 4] | [1, 2, 3, 4] | 合并 | 字符串、列表、元组 | * | [“Hi!”] * 4 | [‘Hi!’, ‘Hi!’, ‘Hi!’, ‘Hi!’] | 重复 | 字符串、列表、元组 | in | 3 in (1, 2, 3) | True | 元素是否存在 | 字符串、列表、元组、字典 | not in | 4 not in (1, 2, 3) | True | 元素是否不存在 | 字符串、列表、元组、字典 | > >= == < <= | (1, 2, 3) < (2, 2, 3) | True | 元素比较 | 字符串、列表、元组 |
注意
in 在对 字典 操作时,判断的是 字典的键in 和 not in 被称为 成员运算符
成员运算符
成员运算符用于 测试 序列中是否包含指定的 成员
运算符 | 描述 | 实例 |
---|
in | 如果在指定的序列中找到值返回 True,否则返回 False | 3 in (1, 2, 3) 返回 True | not in | 如果在指定的序列中没有找到值返回 True,否则返回 False | 3 not in (1, 2, 3) 返回 False |
注意:在对 字典 操作时,判断的是 字典的键
4、完整的 for 循环语法
- 在
Python 中完整的 for 循环 的语法如下:
for 变量 in 集合:
循环体代码
else:
没有通过 break 退出循环,循环结束后,会执行的代码
应用场景
- 在 迭代遍历 嵌套的数据类型时,例如 一个列表包含了多个字典
- 需求:要判断 某一个字典中 是否存在 指定的 值
- 如果 存在,提示并且退出循环
- 如果 不存在,在 循环整体结束 后,希望 得到一个统一的提示
students = [
{"name": "阿土",
"age": 20,
"gender": True,
"height": 1.7,
"weight": 75.0},
{"name": "小美",
"age": 19,
"gender": False,
"height": 1.6,
"weight": 45.0},
]
find_name = "阿土"
for stu_dict in students:
print(stu_dict)
if stu_dict["name"] == find_name:
print("找到了")
break
else:
print("没有找到")
print("循环结束")
|