Python 中数据类型可以分为 数字型 和 ⾮数字型
数字型:整型 ( int )、浮点型( float )、布尔型( bool )、复数型 ( complex )
非数字型:字符串、列表、元组、字典
在 Python 中,所有 ⾮数字型变量 都⽀持以下特点:
1. 都是⼀个 序列 sequence ,也可以理解为 容器
2. 取值 []
3. 遍历 for in
4. 计算⻓度、最⼤/最⼩值、⽐较、删除
5. 链接 + 和 重复 *
6. 切⽚
切⽚ 使⽤ 索引值 来限定范围,从⼀个⼤的 字符串 中 切出 ⼩的 字符串
列表 和 元组 都是 有序 的集合,都能够 通过索引值 获取到对应的数据
字典 是⼀个 ⽆序 的集合,是使⽤ 键值对 保存数据
一、列表(相当于java的数组)
列表是有序的集合
列表的定义
List (列表) 是 Python 中使⽤ 最频繁 的数据类型,在其他语⾔中通常叫做 数组
专⻔⽤于存储 ⼀串 数据,存储的数据 称为 元素
列表⽤ [] 定义,元素 之间使⽤ , 分隔
列表的 索引 从 0 开始
注意:从列表中取值时,如果 超出索引范围,程序会报错
列表常⽤操作
1、循环遍历
遍历 就是 从头到尾 依次 从 列表 中取出 每⼀个元素,并执⾏相同的操作
Python中实现遍历的⽅式很多,⽐如while循环、for循环、迭代器等
# while循环实现列表的遍历
i = 0
name_list = ["zhangsan", "lisi", "wangwu"]
list_count = len(name_list)
while i < list_count:
name = name_list[i]
print(name)
i += 1
Python为了提⾼列表的遍历效率,专⻔提供 for循环 实现遍历
Python中for循环的本质是 迭代器
# for 实现列表的遍历
for name in name_list:
循环内部针对列表元素进⾏操作
print(name)
2、列表嵌套
⼀个列表中的元素⼜是⼀个列表,那么这就是列表的嵌套
schoolNames = [['北京⼤学','清华⼤学'], ['南开⼤学','天津⼤学','天津师范⼤学'], ['⼭东⼤学','中国海洋⼤学']]
示例:⼀个学校,有3个办公室,现在有8位⽼师等待⼯位的分配,请编写程序: 1> 完成随机的分配 2> 获取办公室信息 (每个办公室中的⼈数,及分别是谁)
import random
# 定义⼀个列表⽤来保存3个办公室
offices = [[],[],[]]
# 定义⼀个列表⽤来存储8位⽼师的名字
names = ['A','B','C','D','E','F','G','H']
# 完成随机分配
i = 0
for name in names:
index = random.randint(0,2)
offices[index].append(name)
# 获取办公室信息
i = 1
for tempNames in offices:
print('办公室%d的⼈数为:%d'%(i,len(tempNames)))
i+=1
for name in tempNames:
print("%s"%name,end='')
print("\n")
print("-"*20)
二、元组
元组是有序的集合
元组的定义
元组⽤ () 定义
⽤于存储 ⼀串 数据,元素 之间使⽤ , 分隔
元组的 索引 从 0 开始
# 定义元组
info_tuple = ("zhangsan", 18, 1.75)
# 取出元素的值
print(info_tuple[0]) # 输出:zhangsan
元组中 只包含⼀个元素 时,需要 在元素后⾯添加逗号
info_tuple = (50, )
元组常⽤操作
Tuple (元组)与列表类似,不同之处在于元组的 元素不能修改
info_tuple = ("zhangsan", 18, 1.75)
info_tuple[0] = "lisi" # 程序报错
应⽤场景
1、作为⾃动组包的默认类型
info = 10, 20
print(type(info)) # 输出类型为 tuple
# 交换变量的值
a = 10
b = 20
a, b = b, a # 先⾃动组包,后⾃动解包
2、格式字符串,格式化字符串后⾯的 () 本质上就是⼀个元组
info = ("zhangsan", 18)
print("%s 的年龄是 %d" % info)
3、让列表不可以被修改,以保护数据安全
# 元组和列表之间的转换
# 使⽤ `tuple` 函数 把列表转换成元组
list1 = [10, 11]
tuple1 = tuple(list1)
# 使⽤ `list` 函数 把元组转换成列表
# list1 = list(tuple1)
三、字典(相当于json)
字典是无序的集合
字典的定义
1)、dictionary (字典) 是 除列表以外 Python 之中 最灵活 的数据类型
2)、字典同样可以⽤来 存储多个数据,常⽤于存储 描述⼀个 物体 的相关信息
3)、字典⽤ {} 定义
4)、字典使⽤ 键值对 存储数据,键值对之间使⽤ , 分隔
键 key 是索引
值 value 是数据
键 和 值 之间使⽤ : 分隔
值 可以取任何数据类型,但 键 只能使⽤ 字符串、数字或 元组
键必须是唯⼀的
# 定义字典
xiaoming = {
"name": "⼩明",
"age": 18,
"gender": True,
"height": 1.75
}
# 取出元素的值
print(xiaoming["name"]) # 输出: ⼩明
字典常⽤操作
应⽤场景
在开发中,字典的应⽤场景是:
使⽤ 多个键值对,存储 描述⼀个 物体 的相关信息 —— 描述更复杂的数据信息
将 多个字典 放在 ⼀个列表 中,再进⾏遍历,在循环体内部针对每⼀个字典进⾏相同的处理
card_list = [
{"name": "张三", "qq": "12345", "phone": "110"},
{"name": "李四", "qq": "54321", "phone": "10086"}
]
四、字符串
字符串的定义
1)、字符串 就是 ⼀串字符,是编程语⾔中表示⽂本的数据类型
2)、在 Python 中可以使⽤ ⼀对双引号 " 或者 ⼀对单引号 ' 定义⼀个字符串v
虽然可以使⽤ \" 或者 \' 做字符串的转义,但是在实际开发中:
如果字符串内部需要使⽤ " ,可以使⽤ ' 定义字符串
如果字符串内部需要使⽤ ' ,可以使⽤ " 定义字符串
3)、可以使⽤ 索引 获取⼀个字符串中 指定位置的字符,索引计数从 0 开始
4)、也可以使⽤ for 循环遍历 字符串中每⼀个字符
⼤多数编程语⾔都是⽤ " 来定义字符串
string = "Hello Python"
for c in string:
print(c)
字符串的常⽤操作
1、判断
2、查找和替换
3、拆分和连接
4、⼤⼩写转换
5、文本对齐
6、去除空白字符
提示:列表除了查询⽅法和pop⽅法都没有返回值,字符串所有⽅法都有返回值
字符串的切⽚
切⽚ 译⾃英⽂单词 slice ,翻译成另⼀个解释更好理解: ⼀部分
切⽚ 使⽤ 索引值 来限定范围,根据 步⻓ 从原序列中 取出⼀部分 元素组成新序列
切⽚ ⽅法适⽤于 字符串、列表、元组
字符串[开始索引:结束索引:步⻓]
注意:
1. 指定的区间属于 左闭右开 型 [开始索引, 结束索引) 对应 开始索引 <= 范围 < 结束索引
从 起始 位开始,到 结束 位的前⼀位 结束(不包含结束位本身)
num_str = "0123456789"
# 1. 截取从 2 ~ 5 位置 的字符串
print(num_str[2:6])
2. 从头开始,开始索引 数字可以省略,冒号不能省略
num_str = "0123456789"
# 3. 截取从 `开始` ~ 5 位置 的字符串
print(num_str[:6])
3. 到末尾结束,结束索引 数字和冒号都可以省略
num_str = "0123456789"
# 2. 截取从 2 ~ `末尾` 的字符串
print(num_str[2:])
截取完整的字符串
num_str = "0123456789"
# 4. 截取完整的字符串
print(num_str[:])
4. 步⻓默认为 1 ,如果元素连续,数字和冒号都可以省略
num_str = "0123456789"
# 5. 从开始位置,每隔⼀个字符截取字符串
print(num_str[::2])
# 6. 从索引 1 开始,每隔⼀个取⼀个
print(num_str[1::2])
索引的顺序和倒序
1)、在 Python 中不仅⽀持 顺序索引,同时还⽀持 倒序索引
2)、所谓倒序索引就是 从右向左 计算索引,最右边的索引值是 -1,依次递减
3)、注意:如果 步⻓为负数,并省略了开始索引,则开始索引表示最后⼀位,并省略了结束索引,则结束索引表示第⼀位
# 倒序切⽚
# -1 表示倒数第⼀个字符
print(num_str[-1])
# 7. 截取从 2 ~ `末尾 - 1` 的字符串
print(num_str[2:-1])
# 8. 截取字符串末尾两个字符
print(num_str[-2:])
# 9. 字符串的逆序(⾯试题)
print(num_str[::-1])
print(num_str[::-2])
结果
五、Python 内置函数
Python 包含了以下内置函数:
注意:字符串 ⽐较符合以下规则: "0" < "A" < "a"
六、运算符
注意:in 在对 字典 操作时,判断的是 字典的键 ,in 和 not in 被称为 成员运算符
成员运算符⽤于 测试 序列中是否包含指定的 成员
七、for .. else 语法
在 Python 中,循环语句⽀持 else , 语法如下:
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)
# 判断当前遍历的字典中姓名是否为find_name
if stu_dict["name"] == find_name:
print("找到了")
# 如果已经找到,直接退出循环,就不需要再对后续的数据进⾏⽐较
break
else:
print("没有找到")
print("循环结束")