python 数据类型

字符串

定义

# 1. 使用 单引号 定义
str1 = 'hello'
# 2. 使用 双引号 定义
str2 = "hello"
# 3. 使用 三引号 定义
str3 = """hello"""
str4 = '''hello'''

下标(索引)

下标从0开始,逆序从-1开始

str1 = 'abcdefg'
# 需求: 打印输出字符串中的 a 字符
print(str1[0])
print(str1[-7])
# 需求: 打印输出字符串中 最后一个字符(-1)
print(str1[-1])
# 需求: 打印输出 下标为 3 的位置的字符
print(str1[3])

切片

切取字符串中的某一段,str[start, end, step],开头start,结尾end不包含,步长(间隔)step

my_str = 'abcdefg'
print(my_str[0:3:1]) # abc
# 如果步长是 1, 可以省略不写
print(my_str[0:3]) # abc
# 如果 start 开始位置的下标为 0, 可以不写,但是冒号不能少
print(my_str[:3]) # abc
print(my_str[4: 7]) # efg
print(my_str[4:]) # efg
print(my_str[::2]) # aceg
# 步长为-1,反转字符串
print(my_str[::-1]) # gfedcba

字符串查找方法 find()

在字符串中查找某些字符。如果存在,返回其第一次出现的下标;如果不存在,返回 -1

str_name = 'hello,world!hello'
result_llo = str_name.find('llo')
result_ab = str_name.find('ab')
print(result_llo) # 2
print(result_ab) # -1

字符串的替换 replace()

字符串.replace(old, new, count)  # 将字符串中的 old 字符串 替换为 new 字符串

  • old:原字符串,被替换的字符串
  • new:新字符串,要替换为的字符串
  • count:一般不写,默认表示全部替换;可以指定替换的次数
  • 返回:会返回一个替换后的完整的字符串
  • 注意:原字符串不会改变的
my_str = 'good good study'

# 需求, 将 good 变为 GOOD
my_str1 = my_str.replace('good', 'GOOD')
print(my_str) # good good study
print(my_str1) # GOOD GOOD study

# 将第一个 good 替换为 Good
my_str2 = my_str.replace('good', 'Good', 1)
print(my_str2) # Good good study

# 将第二个 good 替换为 Good
# 先整体替换为 Good, 再将替换后的 第一个Good 替换为 good
my_str3 = my_str.replace('good', 'Good').replace('Good', 'good', 1)
print(my_str3) # good Good study

字符串拆分 split()

字符串.split(sep)  # 将字符串按照指定的字符串 sep 进行分隔

  • sep:按照 sep 分隔,可以不写,默认按照空白字符(空格 \t \n)分隔
  • 返回:列表,列表中的每个数据就是分隔后的字符串
str1 = 'hello Python\tand itcast and\nitheima'
# 1. 默认 按照 空白字符 分隔
list1 = str1.split()
print(list1) # ['hello', 'Python', 'and', 'itcast', 'and', 'itheima']
# 2. 按照 空格 分隔
list2 = str1.split(' ')
print(list2) # ['hello', 'Python\tand', 'itcast', 'and\nitheima']
# 3. 按照 and 分隔
list3 = str1.split('and')
print(list3) # ['hello Python\t', ' itcast ', '\nitheima']

字符串的连接 join()

字符串.join(容器)  # 容器一般是列表,将字符串插入到列表相邻的两个数据之间,组成新的字符串

注意点:列表中的数据 必须都是字符串才可以

list1 = ['hello', 'Python', 'and', 'itcast', 'and', 'itheima']
# 将 列表中数据使用 空格 组成新的字符串
str1 = ' '.join(list1)
print(str1) # hello Python and itcast and itheima
# 使用 逗号 连接
str2 = ','.join(list1)
print(str2) # hello,Python,and,itcast,and,itheima
# 使用 _*_ 连接
str3 = '_*_'.join(list1)
print(str3) # hello_*_Python_*_and_*_itcast_*_and_*_itheima

 列表 list

定义

  • 列表 list,使用 [ ]
  • 列表可以存放任意多个数据
  • 列表中可以存放任意类型的数据
  • 列表中数据之间使用 逗号 隔开
# 方式1, 使用类实例化的方式
# 1.1 定义空列表 变量 = list()
list1 = list()
# 1.2 定义非空列表
# 将容器中的 每个数据 都作为列表中一个数据进行保存
list2 = list('abcd')
print(list2) # ['a', 'b', 'c', 'd']

# 方式2, 直接使用 [] 进行定义(使用较多)
# 2.1 定义空列表
list3 = []
# 2.2 定义非空列表
list4 = [1, 3.14, 'hello', False]

下标和切片

列表的切片得到是 新的列表;字符串的切片得到是 新的字符串

如果下标不存在,会报错

list4 = [1, 3.14, 'hello', False]
# 获取 列表中 第一个数据
print(list4[0]) # 1
# 获取列表中最后一个数据
print(list4[-1]) # False
# 获取中间两个数据即 3.14 和 'hello' (1 和 2)
print(list4[1: 3]) # [3.14, 'hello']

列表查询 index()、count()

index() 方法

  • 这个方法的作用和 字符串中的 find() 的作用是一样
  • 列表中是没有 find() 方法的,只有 index() 方法。字符串中同时存在 find() 和 index() 方法
  • 找到,返回下标
  • 没有找到,无返回结果
count() 方法
列表.count(数据)  # 统计 指定数据在列表中出现的次数
list1 = ['hello', 2, 3, 2, 3, 4]
# 查找 2 第一次出现的下标
num = list1.index(2)
print(num) # 1
# 统计数据 3 出现的次数
num1 = list1.count(3)
print(num1) # 2
# 统计数据 20 出现的次数
num2 = list1.count(20)
print(num2) # 0

添加数据 append()  [重点]

  • 列表.append(数据)  # 向列表的尾部添加数据
  • 返回:None,所以不用使用 变量 = 列表.append()
  • 直接在原列表尾部添加数据,不会生成新的列表,如果想要查看添加后的数据,直接 print() 打印原列表

删除数据 pop()

  • 列表.pop(index)  # 根据下标删除列表中的数据
  • index 下标可以不写,默认删除列表最后一个
  • 返回:删除的数据
# 定义空列表
list1 = []
# 添加数据
list1.append('张三')
print(list1)    # ['张三']
# 添加数据
list1.append('李四')
print(list1)    # ['张三', '李四']
list1.append('王五')
list1.append('赵六')
print(list1)    # ['张三', '李四', '王五', '赵六']
# 删除最后一个数据
list1.pop()
print(list1)    # ['张三', '李四', '王五']
# 删除第二个数据,即下标 1
name = list1.pop(1)
print('删除的对象为:', name)  # 删除的对象为: 李四
print(list1)    #['张三', '王五']

修改数据

  • 想要修改列表中的数据,直接是所有下标即可
  • 列表[下标] = 新数据
my_list = [1, 2]
my_list[0] = 10
print(my_list)  # [10, 2]
my_list[-1] = 200
print(my_list)  # [10, 200]

列表的反转 reverse()

  • 字符串 反转 字符串[::-1]
  • 列表 反转
    • 列表[::-1] 得到一个新的列表, 原列表不会改动
    • 列表.reverse() 直接修改原列表的数据
my_list = ['a', 'b', 'c', 'd', 'e']
my_list1 = my_list[::-1]
print('my_list1:', my_list1)    # my_list : ['e', 'd', 'c', 'b', 'a']
print('my_list :', my_list)     # my_list : ['a', 'b', 'c', 'd', 'e']
# 对原列表反转
my_list.reverse()
print('my_list :', my_list)  # my_list : ['e', 'd', 'c', 'b', 'a']

列表的排序 sort()

  • 前提:列表中的数据类型要一样
  • 列表.sort()  # 默认 升序,从小到大,直接在原列表中进行排序
  • 列表.sort(reverse=True)  # 降序,从大到下,直接在原列表中进行排序
my_list = [1, 4, 7, 2, 5, 8, 3, 6, 9]
# 排序 升序
my_list.sort()
print(my_list)    # [1, 2, 3, 4, 5, 6, 7, 8, 9]
# 降序
my_list.sort(reverse=True)
print(my_list)    # [9, 8, 7, 6, 5, 4, 3, 2, 1]

列表的嵌套

# 列表的嵌套 就是指 列表中数据都是列表
student_list = [["张三", "18", "功能测试"], ["李四", "20", "自动化测试"], ["王五", "21", "自动化测试"]]

print(student_list[0][0])    # 张三
print(student_list[1][0])    # 李四
# 张三 的信息添加一个 性别 男 ---> 向张三所在的列表 添加数据
student_list[0].append('')
print(student_list[0])    # ["张三", "18", "功能测试", "男"]
# 删除 性别
student_list[0].pop()
print(student_list[0])
# 打印 所有人员的年龄
for i in student_list:
    print(i[1])

元组 tuple

定义

  • 元组 tuple, 使用 ()
  • 元组和列表非常相似, 都可以存储多个数据, 都可以存储任意类型的数据
  • 区别就是 元组中的数据不能修改,列表中可以修改
  • 因为元组中的数据不能修改,所以只能 查询方法,如 index, count,支持下标和切片
  • 元组,主要用于传参和返回值
# 定义空元组
tuple1 = ()
# 非空元组
tuple2 = (1, 2, 'hello', 3.14, True)

# 根据 下标 查询
print(tuple2[2])    # hello

# 定义只有一个数据的元组, 数据后必须有一个逗号
tuple3 = (10)
print(type(tuple3))     # <class 'int'>
tuple4 = (10,)
print(type(tuple4))     # <class 'tuple'>
print(tuple4)   # (10,)

组包、解包、交换

  • 1, 在定义元组的时候, 小括号可以省略不写
  • 2, 组包(pack),将多个数据值组成元组的过程 a = 1, 2 # a = (1, 2)
  • 3, 拆包(解包 unpack),将容器中多个数据 分别给到多个变量,需要保证容器中元素的个数和变量的个数保持一致
a = 10
b = 20
# 组包
c = b, a
print(c)   # (20, 10)
# 拆包
e, f = c
print(e, f)    # 20 10
x, y, z = 'abc'
print(y)    # b
# 交换
a, b = b, a
print(a, b)    # 20 10

字典 dict

定义

  • 1, 字典 dict, 使用 {} 表示
  • 2, 字典是由 键值对 组成的,key: value
  • 3, 一个键值对是一组数据,多个键值对之间使用 逗号 隔开
  • 4, 在一个字典中, 字典的键是不能重复的
  • 5, 字典中的键 主要使用 字符串类型, 可以是数字
  • 6, 字典中没有下标
# 1, 类实例化的方式
my_dict1 = dict()
print(type(my_dict1), my_dict1)    # <class 'dict'> {}
# 2, 直接使用 {} 定义
# 定义空字典
my_dict2 = {}
# 定义非空字典
my_dict = {"name": "小明", "age": 18, "height": 1.78, "isMen": True}

增加和修改

  • 字典['键'] = 值
  • # 1, 键 存在,修改
  • # 2, 键 不存在,添加
# 定义非空字典, 姓名, 年龄, 身高, 性别
my_dict = {"name": "小明", "age": 18, "height": 1.78, "isMen": True}
print(my_dict)    # {'name': '小明', 'age': 18, 'height': 1.78, 'isMen': True}
# 将年龄改为 20
my_dict['age'] = 20
print(my_dict)    # {'name': '小明', 'age': 20, 'height': 1.78, 'isMen': True}
# 添加 体重 weight
my_dict['weight'] = 65
print(my_dict)    # {'name': '小明', 'age': 20, 'height': 1.78, 'isMen': True, 'weight': 65}

删除 pop('key')

根据 ‘键’ 删除 键值对

my_dict = {'name': '小明', 'age': 20, 'height': 1.78, 'isMen': True, 'weight': 65}
my_dict.pop('weight')
print(my_dict)    # {'name': '小明', 'age': 20, 'height': 1.78, 'isMen': True}

查询 get('key')

根据字典的 键,获取对应的 值
  • 1,字典['key']   # 键不存在,会报错
  • 2,字典.get('key')    # 键不存在,返回 None
my_dict = {'name': '小明', 'age': 20}
# 获取 name 值
print(my_dict['name'])    # 小明
print(my_dict.get('name'))    # 小明
# 获取 性别 sex
# print(my_dict['sex']) # 会报错, 因为 键不存在
print(my_dict.get('sex'))     # None

遍历 keys()、values()、items()

遍历键 keys()

# 方式一
for 变量 in 字典:
    print(变量)
# 方式二
# 字典.keys() 可以获取字典中所有的 键
for 变量 in 字典.keys():
    print(变量)

 示例:

my_dict = {'name': '小明', 'age': 18, 'sex': ''}
# 方式一
for k in my_dict:
    print(k)
# 方式二
for k in my_dict.keys():
    print(k)

遍历值 values()

# 字典.values() 可以获取字典中所有的 值
for 变量 in 字典.values():
    print(变量)

示例:

my_dict = {'name': '小明', 'age': 18, 'sex': ''}
for v in my_dict.values():
    print(v)

遍历键值对 items()

# 变量1 就是键, 变量2 就是值
# 字典.items() 获取的是字典的 键值对
for 变量1, 变量2 in 字典.items():
    print(变量1, 变量2)

 示例:

my_dict = {'name': '小明', 'age': 18, 'sex': ''}for k, v in my_dict.items():
    print(k, v)

 

posted @ 2023-06-24 00:41  鹿先森JIAN  阅读(11)  评论(0编辑  收藏  举报