目标

  1. 列表
  2. 元组
  3. 字典
  4. 字符串

python 中的数据类型可以分为 数字型 和 非数字型

数字型:

  • int
  • float
  • bool
    真 True 非 0 即真
    假 False 0
  • complex

非数字型:

  • 字符串
  • 列表
  • 元组
  • 字典

在python中,所有 非数字型变量 都支持以下特点:

  1. 都是一个序列sequence,也可以理解为容器
  2. 取值 []
  3. 遍历 for in
  4. 计算长度、最大值/最小值、比较、删除
  5. 链接 + 和重复
  6. 切片
  7. 有序列表内容

01 列表

  • List(列表)是python中使用 最频繁 的数据类型,在其他语言中通常叫做 数组
  • 专门用于存储一串信息
  • 列表用[]定义,数据之间用,分隔
  • 列表的索引从0开始
    注意:从列表中取值时,如果超过索引范围,程序会报错

列表的常用方法
增加:

  • 列表.insert(索引,数据) 在指定位置插入数据
  • 列表.append(数据) 在末尾追加数据
  • 列表.extend(列表2) 将列表2的数据追加到列表

修改:列表[索引] = 数据 修改指定索引的数据

删除:

  • del列表[索引] 删除指定索引的数据

del 关键字本质上是用来将一个变量从内存中删除的,如果变量从内存中删除,后续的代码就不能再使用这个变量了

  • 列表.remove[数据] 删除第一个出现的指定数据
  • 列表.pop() 删除末尾数据
  • 列表.pop[索引] 删除指定索引数据
  • 列表.clear 清空列表

统计:

  • len(列表)图片说明 这是个函数,其他是方法
  • 列表.count(数据) 数据在列表中出现的次数

排序:

  • 列表.sort() 升序排序
  • 列表.sort(reverse = True) 降序排序
  • 列表.reverse() 逆序、反转

02 元组
Tuple (元组)与列表类似,不同之处在于:

  • 元组用()定义
  • 元组的元素不能修改

定义单身元组:
元组中只包含一个元素时,需要在元素后边添加逗号

   single_tuple = (10,)

元组的常用操作:

info_tuple = ('zhangsan',18,1.075)

# 1、取值和取索引
print(info_tuple[0])
# 已经知道数据的内容,希望知道该数据在元组中的索引
print(info_tuple.index(18))

# 2、统计计数
print(info_tuple.count(1.075))
# 统计元组中包含元素个数
print(len(info_tuple))

尽管在python中列表可以存储不同类型的数据,但是在开发中,更多的应用场景是列表存储相同类型的数据,通过迭代遍历,在循环体内部,针对列表中的每一项元素,执行相同的操作
而元组中存放的多数情况下是不同类型的数据,因此在实际开发中,除非能够确认元组中的数据类型,否则针对元组的循环遍历的需求并不多,更多的应用场景是:

  • 函数的参数和返回值,一个函数可以接收任意多个参数,或者一次返回多个数据
  • 格式字符串,格式化字符串后面的()本质上就是一个元组
    info_tuple = ('zhangsan',18,1.852)
    print('%s 年龄是 %d 身高是 %.2f' % info_tuple)
  • 让列表不可以被修改,以保护数据安全
    元组和列表之间的转换:使用 list 函数可以把元组转换成列表,使用 tuple 函数可以把列表转换成元组

03 字典
dictionary (字典) 是除列表以外 python 之中最灵活 的数据类型
字典同样可以用来存储多个数据,通常用来描述一个物体的相关信息
字典和列表的区别:

  • 列表是 有序 的对象集合
  • 字典是 无序 的对象集合

字典使用{}定义
字典使用键值对存储数据,键值对之间使用,分隔
键 key 是索引
值 value 是数据
键和值之间使用:分隔
键必须是唯一的
值可以取 任何 数据类型,但 只能使用字符串、数字和元组

xiaoming_dic = {'name':"xiaoming",
            'age':18}
# 1、取值(跟列表不同的是,取值的时候指定的是key而不是索引)
print(xiaoming_dic['name'])
# 2、增加/修改
# 如果key不存在,会新增键值对
xiaoming_dic["height"] = 1.85
# 如果key存在,会修改已经存在的键值对
xiaoming_dic['name'] = 'xiaoxiaoming'
# 3、删除
xiaoming_dic.pop('name')

字典的常用操作

xiaoming_dic = {'name':"xiaoming",
            'age':18}
# 统计键值对数量
print(len(xiaoming_dic))
# 合并字典
temp_dict = {'height':185,
             'age':17}
# 注意:如果被合并的字典中包含已经存在的键值对,会覆盖原有的键值对
xiaoming_dic.update(temp_dict)
# 清空字典
xiaoming_dic.clear()

循环遍历:

# 变量k是每一次循环中,获取到的键值对的key
for k in xiaoming_dic:
    print('%s-%s' % (k,xiaoming_dic[k]))

04 字符串
多数编程语言都是使用 “ 来定义字符串
虽然在python中可以使用 \” 或 \’ 做字符串的转义,但在实际开发中:

  • 如果字符串内部需要使用 " ,可以使用 ' 定义字符串
  • 如果字符串内部需要使用 ' ,可以使用 " 定义字符串

字符串的常用操作:

  • 可以使用索引获取字符串中 指定位置的字符
  • 可以使用for 循环遍历字符串中的每一个字符

1、判断类型 string.isspace 返回布尔型
2、查找和替换
3、大小写转换
4、文本对齐
5、去除空白字符
6、拆分和连接

hello_str = "hello world"
# 统计字符串长度
print(len(hello_str))
# 统计一个小字符串(子字符串)出现的次数
print(hello_str.count("llo"))
# 某一个子字符串出现的位置
print(hello_str.index("llo"))

# 判断空白字符
space_str = "\r"
print(space_str.isspace())

# 判断字符串中是否只包含数字,以下三个函数都不能判断小数
num_str = '1s'
print(num_str.isdecimal())  # 只能判断数字,开发中使用最多
print(num_str.isdigit())  # 可以判断 unicode 数字
print(num_str.isnumeric())  # 可以判断汉字数字

查找和替换
1.判断是否以指定字符串开始
print(hello_str.startswith('Hello'))
# 2.判断是否以指定字符串结束
print(hello_str.endswith('world'))
# 3.查找指定字符串
# index 同样可以查找指定的字符串在大字符串中的索引
# index 如果指定的字符串不存在,会报错
# find 如果指定的字符串不存在,会返回-1
print(hello_str.find('llo'))
print(hello_str.find('abc'))
# 4.替换字符串
# replace方法执行完成之后,会返回一个新的字符串,不会修改原有字符串
hello_str.replace('world','python')
print(hello_str)

# 文本对齐
poem = ["登鹳雀楼",
        "王之涣",
        "白日依山尽",
        "还河入海流",
        "欲穷千里目",
        "更上一层楼"
        ]
for poem_str in poem:
    print(poem_str.center(10," "))


# 假设:以下内容是从网络上抓取的
# 要求: 顺序并且居中对齐输出一下内容
poem = ["\t\n登鹳雀楼",
        "王之涣",
        "白日依山尽\t\n",
        "还河入海流",
        "欲穷千里目",
        "更上一层楼"
        ]
for poem_str in poem:
    # 先使用strip方法去除字符串中的空白字符串
    # 再使用center方法居中显示字符
    print("|%s|" % poem_str.strip().center(10," "))

字符串的拆分和连接:

  • string.split(str = "",num) 以 str 为分隔符拆分 string 成一个列表,如果 num 有指定值,则仅分割 num+1 个子字符串,str 默认包含\r,\t,\n 和 空格

  • string.join(seq) 以 string 作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串

字符串的切片:

  • 切片方法适用于 字符串、列表、元组
  • 切片使用索引值来限定范围,从一个大的字符串中 切出 小的字符串
    字符串[开始索引:结束索引:步长]

面试题:

num_str = "0123456789"
# 字符串的逆序
print(num_str[::-1])
  • 列表和元组都是有序的集合,都能够通过索引值获取对应的数据
  • 字典是一个无序的集合,是使用键值对 保存数据