06-python中高级数据类型

来源:互联网 发布:淘宝二手镜头可以用吗 编辑:程序博客网 时间:2024/06/06 17:44

python中的数据类型可以分为数字型和非数字型,其中数字型包括:整型,浮点型,布尔型和复数型;非数字型包括字符串,字典,元祖,列表。

在python中,所有非数字型都支持以下特点:
1.都是一个序列sequence ,也可以理解为容器
2.取值都可以用[]
3.遍历for in
4.可以计算长度,最大值最小值,比较,删除(字符串不支持修改)
5.链接使用+和重复使用*
6.切片

列表

  • 列表是用来存储一串信息的,共有11种方法可调用
  • 应用场景:注意列表内存储同类型数据,以便遍历的时候针对每一个元素,执行相同的操作。
  • 列表的常用操作有:增、删、改、查、排序、统计,这些对列表的操作,只要是对列表的方法,都会对原列表进行修改,而不是生成新的列表。
    • :采用的都是list对象的方法来实现
      • list.append(object) 给列表末尾追加一个对象,object是作为一个独立的元素存在的,无论这个对象是字符串,数字,列表,字典等任何数据,都只占用一个index。
      • list.insert(index, object) 给列表任意位置添加一个对象,和append的区别仅仅是添加了index,其余无区别。index是想要将object放入位置的索引值。
      • list.extend(iterable) 首先这个方法的参数必须是一个可迭代对象,如字符串,列表,元祖等,但是不可以是数字型数据;其次,参数对象会被依次迭代的追加进原列表中,如参数是字符串,那么字符串会被迭代后以每个字母作为一个元素追加进列表,每个字母占用一个index。
    • :除可使用del外,其余采用的均为list对象的方法来实现
      • list.remove(object) 此方法可指定删除的元素,参数为需要删除的对象,如字符串,数字,列表等内容,注意object必须存在于列表中,否则 抛出异常
      • list.pop([index]) 与remove不同,此方法参数为索引值,如0,1等,删除指定索引值处的元素,而非指定元素内容。另外,参数非必须,无参数默认删除最后一个元素,同时此方法有返回值,即被删掉的元素
      • list.clear() 清空列表
      • del list[index] 删除指定index处的元素,不常用,以上方法即可满足需求,del关键字本质上是将一个变量从内存中删除。
    • :一种方式,直接使用[index]
      • list[index] = 变更的数据,采用直接找到目标位置直接赋值的方式修改,注意index必须小于列表的长度,否则会抛出异常
    • :可查元素的index,可查某个index处的数据内容
      • list[index] 直接获得index处的数据,可将其赋值给变量进行其他操作,相当于从列表中取值出来了
      • list.index(object) ,找到指定数据所处的index值,object必须存在于列表中,仅找到第一个
    • 排序:两种方法sort和reverse
      • list.sort([key], [reverse = False]) 参数非必须,默认将列表元素按升序排列,排序依据ASCII码中的顺序进行,将reverse改为True后会按降序排列,key用于字典
      • list.reverse() 将列表反转排列,不进行升降序排列,仅仅是逆转原有列表的排列方式
    • 统计数量:一个方法,一个函数
      • list.count(object) 统计列表中object出现的次数
      • len(list) 统计列表元素数量

元组

  • 类似列表,不同之处在于元组不可变,那么自然元组就不存在增删改排序的方法,其他方法与列表雷同
  • 查:
    • info(index) info.index(object) info.count(object) len(info)
  • 应用场景:
    • 作为函数的参数和返回值
    • 格式化字符串时实质就是一个元组
    • 使列表不能被修改,保护数据安全
  • 转换
    • list(tuple)
    • tuple(list)
    • 两个函数来作为元组和列表相互转换的桥梁

字典

  • 字典通常用于存储描述一个物体的相关信息,比如一个人的姓名,年龄,地址等信息时,可以使用字典
  • 键值对中,键只能使用字符串,数字或元组,值可以是任何数据类型,大多数情况下只使用字符串,注意个js的对象不同,这里不能直接使用不带引号的字符串(相当于变量名,同时未定义此变量)
  • 键不可重复
  • len(dict) 可以用来获取字典键值对的数量

常用操作

  • 增:
    • dict[“key”] = value 当字典中存在key时,会修改原内容,当字典中没有这个key时,会添加此键值对进入字典中
    • dict1.update(dict2) 将dict2的内容更新进dict1内,如果存在重复的key,则覆盖原有的
    • dict.setdefault(key, value)

    • dict.pop(key) 删除指定的键值对,最常用
    • del dict[key]
    • dict.clear() 清空字典
    • 和增的方式雷同
    • dict[key] 此式就会返回要查询的key的value值,如果key不存在,那么会报错
    • dict.get(key) 用途与上类似,区别在于找不到指定的key,不会报错,要常使用此方法,而非上一个
    • dict.keys()获取所有的key,返回在列表中
    • dict.values()获取所有的values,返回在列表中
    • dict.items()获取所有的键值对,以元组的形式返回在列表中
    • 可以对以上三种方法得到的数据进行遍历,来统一操作
  • 循环遍历字典
    • 同样使用for in来遍历
for k in xiaoming:    print("%s: %s" % (k, xiaoming[k]))

其中的k得到的是key,以这种方式可以取到key及value

字符串

所有对字符串的操作,均不会改变原字符串
* 字符串建议使用双引号,特殊情况下再使用单引号,比如字符串内部需要使用双引号时
* 字符串可以使用for in循环遍历,得到每一个字符,性质和列表一致
* len(str) 获取字符串长度
* str.count(str1) 小字符串在大字符串中出现的次数
* str[index] 获取单个字符
* str.index(str1) 小字符串第一次出现的索引

字符串常用操作

  • 判断类型:返回值为布尔值
    • isspace 必须是空格或者\t等转义字符,不能是空
    • isalnum 必须是纯数字或字母,不能有空格
    • isalpha 必须是纯字母,不能有空格
    • isdecimal
    • isdigit
    • isnumeric
    • islower 字符串内只要存在的字母均为小写即可,其他的任意字符都可以存在
    • isupper 字符串内只要存在的字母均为大写即可,其他的任意字符都可以存在
    • istitle 每个单词首字母必须大写
  • 查找和替换
    • startswith(str) 以str开头
    • endswith(str) 以str结束
    • find(str, start=0,end=len(string)) 检查str是否包含在string中,如果start和end指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回-1
    • rfind()
    • index(str, start=0,end=len(string)) 跟find方法类似,不过如果找不到则报错
    • rindex()
    • replace(old_str,new_str,num=str.count(old)) 替换字符串,num如果指定,则替换不超过num次
  • 大小写转换
    • capitalize() 把字符串的第一个字符大写
    • title() 把字符串的每个单词首字母大写
    • lower() 转换str所有大写字符为小写
    • upper() 转换str中的小写字母为大写
    • swapcase() 反转str中的大小写
  • 文本对齐
    • ljust(width) 返回一个原字符串左对齐,并使用空格填充至长度width的新字符串
    • rjust
    • center
  • 去除空白字符
    • lstrip()
    • rstrip()
    • strip() 裁掉左右空白字符,包括空格和\t \n 等
  • 拆分和连接
    • partition(str) 把原字符串分成一个三元素的元组,str前,str,str后
    • rpartition(str)
    • split(str = “”,num) 以str为分隔符分割字符串,返回一个列表,如果指定num,则将字符串分割成num+1个子字符串,str默认包含空格 \r \t \n,什么都不传入,会以默认包含的内容来分割字符串
    • splitlines 按照行分割,返回一个包含各行作为元素的列表
    • join() 分隔符在join前作为join的调用者,传入的参数被合并起来(列表,元组,集合均可使用此方法进行 合并,需要保证这些容器中的数据为字符串

公共方法

  • 切片

    • 切片适用于字符串,列表,元组,不适用字典
    • 支持顺序索引,同时也支持倒序索引,倒序是步长为负值
  • 内置函数

    • len() 获取元素个数
    • del() 和del关键字使用类似,只是将删除内容放入括号内
    • max() 如果是字典,只针对key
    • min()
  • 运算符

    • +拼接合并,合并为一个新的数据,原数据不变,在拼接列表时,有点类似extend,但是extend是将原列表修改
    • * 重复多次,适用于字符串,列表,元组,不可用于字典
    • in 元素是否存在,适用于字符串,列表,元组,字典,操作字典时,指的是key
    • not in 与上类似
    • 比较运算符,不仅可以用于单个数字,还可用于元组,列表,字符串,但是其中包含的数据应当是数字
  • 完整的for循环语法

    • 使用for in 可以实现列表,元组,字典,字符串的遍历。while循环不可以实现字典的遍历,因为字典是无序的,无法获取index。
    • for…….else:当for循环中的内容被正常执行完毕,而没有break,那么就会执行else中的语句,一般情况下,for循环中肯定有个if判断
    • 应用场景:在遍历一个列表嵌套字典时,需要判断某个字典中是否存在指定的值,如果存在,提示并且退出循环(break),如果不存在,在循环结束,得到一个统一的提示(else中的语句)
原创粉丝点击