Python的非数字类型

Python 中数据类型可以分为 数字型 和 ?数字型

数字型:整型 ( int )、浮点型( float )、布尔型( bool )、复数型 ( complex )

非数字型:字符串、列表、元组、字典

在 Python 中,所有 ?数字型变量 都?持以下特点:

  1. 都是?个 序列 sequence ,也可以理解为 容器

  2. 取值 []

  3. 遍历 for in

  4. 计算?度、最?/最?值、?较、删除

  5. 链接 + 和 重复 *

  6. 切?

切? 使? 索引值 来限定范围,从?个?的 字符串 中 切出 ?的 字符串 

列表 和 元组 都是 有序 的集合,都能够 通过索引值 获取到对应的数据

字典 是?个 ?序 的集合,是使? 键值对 保存数据

 一、列表(相当于java的数组)

列表是有序的集合

列表的定义

  List (列表) 是 Python 中使? 最频繁 的数据类型,在其他语?中通常叫做 数组

  专??于存储 ?串 数据,存储的数据 称为 元素

  列表? [] 定义,元素 之间使? , 分隔

  列表的 索引 从 0 开始

注意:从列表中取值时,如果 超出索引范围,程序会报错

列表常?操作

Python的非数字类型

 Python的非数字类型

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" # 程序报错

 Python的非数字类型

应?场景

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 是数据

  键 和 值 之间使? : 分隔

  值 可以取任何数据类型,但 键 只能使? 字符串、数字或 元组

  键必须是唯?的

Python的非数字类型

# 定义字典 
xiaoming = { 
    "name": "?明", 
    "age": 18, 
    "gender": True, 
    "height": 1.75
} 
# 取出元素的值 
print(xiaoming["name"]) # 输出: ?明

字典常?操作

 Python的非数字类型

应?场景

在开发中,字典的应?场景是:

使? 多个键值对,存储 描述?个 物体 的相关信息 —— 描述更复杂的数据信息

将 多个字典 放在 ?个列表 中,再进?遍历,在循环体内部针对每?个字典进?相同的处理

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、判断

Python的非数字类型

 2、查找和替换

 Python的非数字类型

 3、拆分和连接

 Python的非数字类型

 4、??写转换

 Python的非数字类型

 5、文本对齐

Python的非数字类型

 6、去除空白字符

Python的非数字类型

提示:列表除了查询?法和pop?法都没有返回值,字符串所有?法都有返回值

字符串的切?

切? 译?英?单词 slice ,翻译成另?个解释更好理解: ?部分

切? 使? 索引值 来限定范围,根据 步? 从原序列中 取出?部分 元素组成新序列

切? ?法适?于 字符串、列表、元组

字符串[开始索引:结束索引:步?]

Python的非数字类型

注意:

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 内置函数

Python 包含了以下内置函数:

Python的非数字类型

注意:字符串 ?较符合以下规则: "0" < "A" < "a"

六、运算符

Python的非数字类型

注意:in 在对 字典 操作时,判断的是 字典的键 ,in 和 not in 被称为 成员运算符 

成员运算符?于 测试 序列中是否包含指定的 成员 

Python的非数字类型

 七、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("循环结束")

 

Python的非数字类型

上一篇:Python3实现自动抽奖


下一篇:9.18JavaWeb之Servlet重定向