序列类型

  1. 定义:在python中,序列就是一组按照顺序排序的值【数据集合】

  2. python内置的序列类型:

    • 字符串
    • 列表
    • 元组
  3. 特点:支持索引、切片操作

    • 索引:正负表示方向,从0开始

    • 切片:截取字符串的部分内容,[start​ : end : ​step]

      • start:起点下标
      • end:终点下标
      • step:步长,默认为1

字符串

不可变数据类型

定义

  1. 定义:

    1
    2
    str = 'hello world'
    print(type(str))

    运行结果:

  2. 获取下标对应内容:

    1
    print(str[0])

    运行结果:

  3. 遍历:

    1
    2
    for i in str:
    print(i, end=' ') # end=' '的作用是:不换行输出

    运行结果:

常用方法

  1. 获取字符串长度:

    1
    2
    str = 'I Love Python'
    print(len(str))

    运行结果:

  2. 首字母变大写:

    1
    2
    name = 'bob'
    print(name.capitalize())

    运行结果:

    使用占位符输出:

    1
    print('首字母大写后:%s' % name.capitalize()) #会使用format亦可

    运行结果:

  3. 去除前后空格:

    1
    2
    str = '  hello world  '
    print(str.strip())

    运行结果:

    去除字符串左(右)边的空格:

    1
    print(str.lstrip()) #去除左边的空格,右边同理

    运行结果:

    注意:该方法仅能将字符串前后的空格去除,中间空格无效果。

  4. 复制字符串:

    1
    2
    3
    a = 'Bob'
    b = a
    print(b)

    运行结果:

    查看内存地址:

    1
    2
    print(id(a))
    print(id(b))

    运行结果:

    上图内存地址相同说明前面的 = 为复制操作。

  5. 查找操作:

    1
    2
    str = 'I Love Python'
    print(str.find('o'))

    运行结果:

    注意:

    • 该方法仅能返回该字符出现的第一个位置,若查询不到返回 -1
    • 使用 index() 方法也可以获取字符下标,区别是index找不到下标时会报错
  6. 判断是否以*开头/结尾:

    1
    2
    str = 'I Love Python'
    print(str.startswith('I')) #开始

    运行结果:

  7. 转换大/小写:

    1
    2
    3
    str = 'I Love Python'
    print(str.upper()) #大写
    print(str.lower()) #小写

    运行结果:

切片操作

  1. 输出 2-5 之间的字符串:

    1
    2
    str = 'I Love Python'
    print(str[2:5])

    运行结果:

  2. 从 2 开始到最后:

    1
    2
    str = 'I Love Python'
    print(str[2:])

    运行结果:

    注意:开始(0)、结束可省略不写。

  3. 倒序输出:

    1
    2
    str = 'I Love Python'
    print(str[::-1])

    运行结果:

列表

定义

  1. 定义:

    1
    2
    list = []
    print(type(list))

    运行结果:

  2. 特点:

    • 支持增删查改
    • 列表中的数据可变化(内存地址不会改变)
    • 使用[]来表示列表类型,数据项(任何类型的数据)之间用逗号分隔
    • 支持索引和切片操作

常用方法

  1. 列表长度:

    1
    2
    list = [1, 2, 3, 4] 
    print(len(list))

    运行结果:

  2. 查找:

    • 输出第一项:

      1
      2
      list = [1, 2, 3, 4]
      print(list[0])

      运行结果:

    • 输出第二个及以后的项:

      1
      2
      list = [1, 2, 3, 4]
      print(list[1:]) #切片操作

      运行结果:

    • 倒序输出列表项:

      1
      2
      list = [1, 2, 3, 4]
      print(list[::-1])

      运行结果:

    • 多次输出:

      1
      2
      list = [1, 2, 3, 4]
      print(list * 3)

      运行结果:

    • 范围内查找(index):

      1
      2
      listA = ['nihao', 1, 0.2, True]
      print(listA.index(0.2, 0, 3)) #返回该数据在列表中的下标,若不存在会报错

      运行结果:

      注意:index方法中三个参数分别是 查询的内容、起始下标、终止下标。

  3. 增加:

    • 使用 append 追加:

      1
      2
      3
      list = [1, 2, 3, 4]
      list.append('nihao')
      print('追加后:', list)

      运行结果:

      注意:无论追加什么类型的数据,只占一个位置。

    • 使用 insert 插入:

      1
      2
      3
      list = [1, 2, 3, 4]
      list.insert(1, 'aaa')
      print(list)

      运行结果:

      注意:

      • insert方法有两个参数,分别为要插入的位置和数据项
      • 上面提到的两种增加数据的方法均只能插入一个数据项
    • 批量增加 extend

      1
      2
      3
      4
      list = [1, 2, 3, 4]
      Range = list(range(10)) # 将range容器强转为list类型
      listA.extend(Range)
      print(listA)

      运行结果:

      注意:extend方法的作用是将两个list中的数据合并为一个list,所以下面的代码亦能实现该操作:

      1
      2
      3
      list = [1, 2, 3, 4]
      listA.extend([0,1,2,3,4,5,6,7,8,9])
      print(listA)
  4. 修改:

    通过下标操作:

    1
    2
    3
    list = [1, 2, 3, 4]
    listA[0] = 'enen'
    print(listA)

    运行结果:

  5. 删除:

    • 删除单个数据(del关键字+下标实现):

      1
      2
      3
      list = [1, 2, 3, 4]
      del listA[0]
      print(listA)

      运行结果:

      注意:这种删除方法适用于删除单个数据项。

    • 批量删除数据(切片操作实现):

      1
      2
      3
      list = [1, 2, 3, 4]
      del listA[1:2]
      print(listA)

      运行结果:

    • 移除指定的数据(remove):

      1
      2
      3
      listA = ['nihao', 1, 0.2, True]
      listA.remove(0.2)
      print(listA)

      运行结果:

    • 移除指定下标的数据(pop):

      1
      2
      3
      listA = ['nihao', 1, 0.2, True]
      listA.pop(1)
      print(listA)

      运行结果:

      注意:要区分 removepop 的区别

      • remove:移除指定内容的数据项
      • pop:移除指定下标的数据项

元组

是一种不可变的序列,创建之后不能做任何修改

定义

  1. 定义:

    1
    2
    tupleA = (1, 2.001, True, ['nihao', 'python'])
    print(tupleA)

    运行结果:

  2. 特点:

    • 创建后数据值不能修改

    • 使用 ( ) 来定义一个元组,数据之间使用逗号分隔

    • 元组中的数据可以是任意类型的数据

    • 当元组中只有一个数据时要加上逗号,否则解释器会当做整型来处理

    • 支持切片操作

查询

  1. 下标:

    1
    2
    tupleA = (1, 2.001, True, ['nihao', 'python'])
    print(tupleA[3])

    运行结果:

  2. 循环遍历:

    1
    2
    3
    tupleA = (1, 2.001, True, ['nihao', 'python'])
    for i in tupleA:
    print(i,end=' ')

    运行结果:

  3. 切片操作:

    • 切片正序输出:

      1
      2
      tupleA = (1, 2.001, True, ['nihao', 'python'])
      print(tupleA[::])

      运行结果:

    • 切片倒序输出:

      1
      2
      tupleA = (1, 2.001, True, ['nihao', 'python'])
      print(tupleA[::-1])

      运行结果:

    • 易错:

      • 步长:

        1
        2
              tupleA = (1, 2.001, True, ['nihao', 'python'])
        print(tupleA[::-2]) #步长为2,隔一个取一个

        运行结果:

      • 切片方向:

        1
        2
        tupleA = (1, 2.001, True, ['nihao', 'python'])
        print(tupleA[-2:-1:]) #从左向右,从-2位置到-1位置连续取

        运行结果:

        注意:根据上图可知,当元组只有一个数据时要添加一个逗号避免被解释器当做整型

      • 验证元组不可变:

        1
        2
        3
        4
        tupleA = ()
        print(id(tupleA))
        tupleA = ('nihao',)
        print(id(tupleA))

        运行结果:

        注意:据上图可知,相同名称的元组再次被赋值后内存地址会发生改变,以此可验证元组数据不可修改的特性

注意

  • 尽管元组数据不能修改但元组中列表的数据可修改

    1
    2
    3
    tupleA = (1, 2.001, True, ['nihao', 'python'])
    tupleA[3][0] = 'haha'
    print(tupleA)

    运行结果:

  • 强制类型转换

    1
    2
    tupleC=tuple(range(10))
    print(type(tupleC))

    运行结果:

  • 统计数据出现的次数:

    1
    2
    tupleC=tuple(range(10))
    print(tupleC.count(1))

    运行结果:

字典

python中重要的数据类型,以键值对形式创建并用大括号包裹

定义

  1. 定义:

    1
    2
    dictA = {}
    print(type(dictA))

    运行结果:

  2. 特点:

    • 不属于序列类型(无序),没有下标概念
    • 用{}来表示字典对象,键值对之间使用逗号分隔
    • 键是不可变的的类型(元组、字符串),值可以是任意类型
    • 键要唯一,否则后者覆盖前者

操作

  1. 增加:

    1
    2
    3
    dictA = {}
    dictA['name'] = '菜徐坤'
    print(dictA)

    运行结果:

  2. 查询:

    • 查询值:

      1
      2
      3
      dictA = {}
      dictA['name'] = '菜徐坤'
      print(dictA['name'])

      运行结果:

    • 查询所有的键:

      1
      2
      dictA = {'name': '菜徐坤', 'age': 30, 'school': '北京电影学院'}
      print(dictA.keys())

      运行结果:

    • 查询所有的值:

      1
      2
      dictA = {'name': '菜徐坤', 'age': 30, 'school': '北京电影学院'}
      print(dictA.values())

      运行结果:

    • 查询所有的键值对:

      1
      2
      dictA = {'name': '菜徐坤', 'age': 30, 'school': '北京电影学院'}
      print(dictA.items())

      运行结果:

    • 遍历字典:

      1
      2
      3
      4
      5
      dictA = {'name': '菜徐坤', 'age': 30, 'school': '北京电影学院'}
      for key,values in dictA.items(): #第一种遍历方法
      print('{}:{}'.format(key,values))
      #for item in dictA.items(): #第二种遍历方法
      # print(item, end=' ')

      运行结果:

  3. 修改:

    1
    2
    3
    4
    5
    dictA = {}
    dictA['name'] = '菜徐坤'
    print(dictA)
    dictA['name'] = '肖战'
    print(dictA)

    运行结果:

  4. 删除:

    • del关键字:

      1
      2
      3
      dictA = {'name': '菜徐坤', 'age': 30, 'school': '北京电影学院'}
      del dictA['name']
      print(dictA)

      运行结果:

    • pop方法:

      1
      2
      3
      dictA = {'name': '菜徐坤', 'age': 30, 'school': '北京电影学院'}
      dictA.pop('name')
      print(dictA)

      运行结果:

公用方法

合并(+)

使用于字符串、列表、元组

  1. 字符串:

    1
    2
    3
    strA = 'hello '
    strB = 'python'
    print(strA + strB)

    运行结果:

  2. 列表:

    1
    2
    3
    listA = ['hello']
    listB = ['python']
    print(listA + listB)

    运行结果:

  3. 元组:

    1
    2
    3
    tupleA = ('hello',)
    tupleB = ('python',)
    print(tupleA + tupleB)

    运行结果:

复制(*)

适用于字符串、列表、元组

  1. 字符串:

    1
    2
    strB = 'python'
    print(strB * 3)

    运行结果:

  2. 列表:

    1
    2
    listB = ['python']
    print(listB * 3)

    运行结果:

  3. 元组:

    1
    2
    tupleB = ('python',)
    print(tupleB * 3)

    运行结果:

判断(in)

适用于字符串、列表、元组、字典

1
2
strA='hello python'
print('e' in strA)

运行结果:

注意:

  • 返回值为 Bool 类型
  • 当字典类型的数据使用 in 做判断时,通常判断的是 key 而不是 value