数据类型:字符串,列表,元组,字典
数据类型
数据类型是什么:
程序本质上就是用于去处理计算机中的数据的流程,计算机里面有图片,视频,文本,音乐等不同类型的数据。在Python中同样对数据进行了划分,正是因为有了各种数据类型,程序才可以“有的放矢”地进行各种不同数据操作而不至于乱套。
不同类型的数据,计算机在底层给存储该数据分配的默认空间是不一样的。拿现实生活来说,我们给手机配一个包装盒绝对不会用鞋盒那么大的盒子,避免浪费资源。
python中的数据类型:
Python3 中有六个标准的数据类型:
- Number(数字)
- String(字符串)
- List(列表)
- Tuple(元组)
- Set(集合)
- Dictionary(字典)
注意:在不确定函数是什么类型时,使用 **type()**查询
学习数据类型我们主要学习如何对数据类型进行 增删改查
# 确定函数为列表类型
list_01 = ["本是同根生,相煎何太急"]
print("list_01的数据类型为:", type(list_01))
Python3 的六个标准数据类型中:
不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);
可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)
字符串
字符串的构造
字符串之间可以相互进行拼接,用format或 % 符号构造都是较好的选择:
str_01 = "学习是一个缓慢的过程"
str_02 = "不管如何枯燥,我们都要坚持"
print("{},%s".format(str_01),% (str_02))
字符串的截取(重点)
字符串的截取是学习字符串的重点,不需要我们死记硬背,更多的是需要我们多做练习,灵活运用。
字符串中每一个元素都有一个默认的索引值,对字符串的增删改查多数在索引值的基础上进行的。
注意:
- 字符串的索引都是从0开始。
- 空格,标点符号都为一个元素
- 截取字符串时,[ ] 左闭右开 取左不取右
str_01 = "恰同学少年,风华正茂;书生意气,挥斥方遒。"
print(str_01) # 打印字符串
print(len(str_01)) # 查询字符串元素个数
print(str_01[1]) # 打印”同“元素
print(str_01[0:5]) # 打印”恰同学少年“,不包括索引值最后一位”5“
print(str_01[0:-1]) # 截取索引值为"恰"开始直到字符串结尾的前一个:"遒",-1的索引值表示最后一个
print(str_01[0:len(str_01)]) # 截取字符串0开始,到结束的字符串
print(str_01[:-1]) # 打印整段字符串至结尾前一个元素,”:“前未设置参数,默认是从0开始
print(str_01[::-1]) # 从后往前打印字符串,步长为-1
print(str_01[200]) # 索引值超过str_01内的下标值
字符串的查询
当我们需要对字符串中某些元素检索时,不知道下标该怎么办呢 ?
# 定义字符串str_02:
str_02 = "后宫佳丽三千人,三千宠爱在一身。"
str_02.find("宠") # 查找括号内的元素,查找顺序:左——>右 如果找到返回第一次出现的下标,查找不到 返回-1。
str_02.rfind("宠") # 右——>左
str_02.index("佳丽") # 跟 # find 一样 左——>右 不同点:查找不到结果报错 "佳丽"为一个元素,一个整体。
str_02.rindex("动画") # 右——>左
str_02.count("三") # 统计括号内元素出现的次数
# startswith 与 endswith 后期多用于爬虫网页的检索
str_03 = "https://www.baidu.com"
str_03.startswith("https") # 判断字符串是否为https开头
str_03.endswith(".com") # 判断字符串是否以.com结尾
------以下了解即可------
str_02.isalnum() # 判断是否含有特殊字符
str_02.isalpha() # 是否是纯英文
str_02.isdigit() # 是否为纯数字
str_02.rjust(50) # 将myStr字符串在50长度的空间向右看齐
str_02.ljust(50) # 将myStr字符串在50长度的空间向左看齐
str_02.center(50) # 将myStr字符串在50长度的空间居中显示
字符串的替换与切割
查询到字符串就要就字符串进行修改,切割等的操作。
# 定义字符串 str_04
str_04 = "回眸一笑百媚生,\n六宫粉黛无颜色。"
# 字符串的替换
str_04.replace("哭", "笑")
# 字符串的切割
str_04.split(",") # 按照括号的元素进行分割,括号内的元素不存在。
str_04.splitlines() # 将str_04按照换行符(\n)进行切割
str_05 = "亲朋无一字,老病有孤舟。"
str_05.partition("老") # 将字符串str_05按照默认从左往右出现的第一个"老"分割成若干部分,小没有删除
str_05.rpartition("老") # 将字符串str_05按照从右往左出现的第一个"老"分割成若干部分,小没有删除
str_05.lstrip() # 去除字符串name左边的空格
str_05.rstrip() # 去除字符串name右边的空格
str_05.strip() # 去除字符串两边的空格
字符串的大小写
str_06 = "The wind was rushing and the apes were whistling."
str_06.lower() # 将字符串统一转化成小写字母
str_06.upper() # 将字符串统一转化成大写字母
str_06.capitalize() # 将字符串str_06的首字母大写
str_06.title() # 将字符串的每一个单词的首字母大写
字符串的方法有很多,我们只需要对常用的方法熟悉即可:
- find 方法
- index 方法
- count 方法
- startswith 和 endswith 方法
- replace 方法
列表
列表(list)是python常用的类型之一,是可变类型,特点为:
- 列表中元素是个有序的集合,下标从0开始,与字符串相似;
- 列表的符号为[ ] , 内部元素用逗号间隔开;
- 内部元素由多个数据类型构成, 数据类型可相同也可不同;
定义列表:
# 定义空列表
list_01 = list()
list_01 = []
# 定义一个整数类型的列表
list_03 = [1, 2, 3, 4]
# 定义一个字符串类型的列表
list_04 = ["我", "爱", "你", "的", "点", "点", "滴", "滴"]
# 定义不同类型的列表
list_05 = [1, "学习", {"姓名": "小张", "性别": "男"}, True]
增加列表
append : 增加一个元素在列表的最后
insert : 在指定位置添加元素 (在下标的位置进行添加)
extend : 合并两个列表
# 定义一个列表
list_01 = [23, "存在即合理",True, {"爱好": "干饭", "工作": "学生"}, [456]]
# append()
list_01.append("命运")
# insert
list_01.insert(2, "生活的意义")
# 定义被合并的列表
list_02 = ["没有公平可言", "坚持就是胜利"]
# 将list_02的元素添加到list_01中,添加到list_01的末尾,list_02的数据保持不变。
list_01.extend(list_02)
删除列表
pop : 从列表最后删除一个元素
remove : 删除指定的内容,默认从左往右的第一个
del : 删除指定下标的元素
# 定义一个列表
list_03 = ["谈笑有鸿儒", True, "Date"]
# pop 删除列表中最后一个元素
list_03.pop()
# 删除列表中指定的元素
list_03.remove("谈笑有鸿儒")
# 根据下标删除列表中的元素
del list_03[0]
# 打印列表list_03,列表内元素已删空
print(list_03)
修改列表
根据下标修改列表中的元素,找出对应的下标,直接赋值
# 定义一个列表
list_04 = ["岁月蹉跎", "python", "元素"]
# 修改下标为2的元素 "元素"
list_04[2] = "基础学习"
查看列表
查看list中的元素和字符串下标查询基本一致
xx in 列表 :判断元素是否存在列表中
xx not in 列表: 判断元素是否不存在列表中
# 定义一个列表
list_05 = ["时间苦短", "python用起", {"住址":"中国"}]
# 查询列表中元素的下标
list_05.index("时间苦短")
# 查询下标0-2的元素
list_05[0:3]
# 判断元素是否存在列表中,方法1
if "python" in list_05:
print("存在")
else:
print("不存在!")
# 判断元素是否存在列表中,方法2
if "python" not in list_05:
print("不存在")
else:
print("存在!")
# 历遍元素
for i in list_05:
print(i)
for i in range(len(list_05)):
print(i)
列表排序
将列表中的数字或字母按照顺序排序
- sort 将元素按照从小到大排序
- reverse 将函数 在sort函数的基础上,进行反序
list_06 = [1, 50 ,40, 80, 100]
list_06.sort() # 将列表中元素从小到大排序
list_06.reverse() # 对升序后的列表进行反转就是降序
list_07 = ["e", "c", "a", "n", "u", "p"]
list_07.sort() # 将列表中元素从小到大排序
list_07.reverse() # 对升序后的列表进行反转就是降序
# 方法二 降序
list_07.sort(reverse=True) # reverse 参数
字符串与列表之间的转换
使用list(str),强制将字符串str转换成列表
# 定义字符串
str_01 = "字符串与列表之间的转换"
# 将字符串转换成字符串
list_09 = list(str_01)
使用join将列表list转换成字符串str
list_10 = ["我", "是", "不", "是", "你", "最", "疼", "爱", "的", "人"]
# 将列表转化成字符串
str_02 = "".join(list_10)
元组
元组 只能对元组内的元素进行查询,特点如下:
- 由一个或者多个数据构成,数据的类型可以不相同也可以相同;
- 元组中的数据需要写在 () 中括号内部,数据与数据之间用逗号隔开;
- 元组是一个有序的集合,下标索引默认重 0 开始,和字符串类似;
- 元组的数据不能被修改;
元组的定义
# 定义空元组
tuple_01 = tuple()
# 查看数据
type(tuple_01)
# 定义一个元组
tuple_02 = ("热爱生活", 50, {"元组": "不可修改与删除"})
print(tuple_02)
查询数据
tuple_02= ("python",False,2.5,40,"tuple") # 元组中的数据可以由不同类型的数据构成
type(tuple1) # 通过内置函数type获取数据类型
tuple1[0] # 获取元组中索引值为1 的数据
tuple1[len(tuple1)-1] # 查询元组中的最后一个元素,注意是len(tuple)-1,并非len(tuple),是一个元素。
tuple1[1:4] # 获取元组索引值1-4的数据
tuple1[:5] # 如果冒号之前没有设置参数,默认重0开始,表示获取元组索引值0-5的数据
tuple1[3:] # 如果冒号之后没有设置参数,默认到元组最后一个数据介绍,包括最后一个数据
元组:删除,修改–报错
元组类型是不可变类型,删除,删除数据时系统会报错,例如:在传输文件给其他用户时,不希望其他用户对本文件进行修改等操作,只能查看数据。
tuple_03 = ("发奋图强", 50, True, "Del")
# 修改下标为了0的元素
tuple[0] = "海南"
# 编译器会报错:TypeError: ‘tuple’ object does not support item assignment(翻译:元组tuple不支持修改)
del tuple[0]
# 编译器会报错:TypeError: ‘tuple’ object doesn’t support item deletion(翻译:元组tuple不支持删除)
字典
字典是常用的数据类型,与字符串/列表/元组 不同,字典元素是一对键值对:keyh和value,有以下特点:
- 由一个或者多个键值对构成,键值对的类型可以不相同也可以相同;
- 字典中的键值对需要写在 { } 中括号内部,键值对中的 key 和 value 用 : 隔开,键值对与键值对之间用逗号隔开;
- 字典是一个无序的集合;
- 字典中 key 具有唯一性;
定义字典
# 字典空字典
dict_01 = dict()
dict_01 = {}
# 差查询字典的数据类型
type(dict_01)
# 查询字典中的元素个数
len(dict_01)
dict_02 = {"姓名": "老王", "住址": "老李隔壁", "职业":"修下水道"}
注意:如果字典中出现相同的 key 值,只有最后一个 key / value 有效,前面相同的 key / value 会被覆盖,这就是字典 dict 所谓的唯一性。
增加字典
- 使用字典[key] = value的方式。
- fromkeys( ) 括号内元素创建key,创建字典,value默认为None
# 创建空字典
dict_03 = {}
dict_03["姓名"] = "老李"
dict_03["住址"] = "老王隔壁"
dict_03["职业"] = "卖帽子"
# formkeys 创建键值对,value为None
dict_03.formkeys("出行工具")
# 打印字典元素个数
print(len(dict_03))
# 打印字典全部元素
print(dict_03)
删除字典
- 删除字典中的数据,需要根据键值对中的 key 值来删除对应的键值对,删除使用 del 关键字;
- 使用clear清空整个字典,剩下一个空字典;
dict_04 = {"姓名": "老王", "住址": "老李隔壁", "职业":"修下水道"}
# 根据key删除value
del dict_04["姓名"]
# clear 清空字典所有键值对
dict_04.clear
修改字典
- 字典是无序的,没有下标值。
- 对key进行操作,修改value。
dict_05 = {"姓名": "老王", "住址": "老李隔壁", "职业":"修下水道"}
修改姓名的值
dict_05["姓名"] = "小王"
查询字典
1.操作和删除数据/修改数据一样,直接根据键值对中的 key 值操作即可;
2. setdefault函数:括号内输入key,查询value,如果不存在就添加一个键,值为None;
dict_06 = {"姓名": "老王", "住址": "老李隔壁", "职业":"修下水道"}
# 根据key查询
dict_06["姓名"]
# 根据setdefaul查询,查询不到就添加key值,value为None
dict_06.setdefaul("生日")
合并字典
update函数:将一个字典添加到另外一个字典的末尾,把两个字典合并到一个字典,因为字典的key唯一性,所以当字典合并时候,key如果不存在就添加key,value,存在就修改value值
dict_07 = {"姓名": "老王", "住址": "老李隔壁", "职业":"修下水道"}
dict_08 = {"年龄": "19", "老婆": "无"}
# 将dict_08的元素添加到dict_07中;
dict_07.update(dict_08)
print(dict_07)
字典的历遍
获取所有的键(key)
dict_07 = {"姓名": "老王", "住址": "老李隔壁", "职业":"修下水道"}
# 获取字典所有的键
for i in dict_07.keys():
print(i)
获取所有的值(value)
dict_07 = {"姓名": "老王", "住址": "老李隔壁", "职业":"修下水道"}
# 获取字典所有的键
for f in dict_07.values():
print(f)
获取所有的键值对
dict_07 = {"姓名": "老王", "住址": "老李隔壁", "职业":"修下水道"}
# 获取字典所有的键值对 方法一
for test in dict_07.items():
print("key=%s:value=%s" % (test[0], test[1]))
# 获取字典所有的键值对 方法二
for test_1,test_2 in dict_07.items():
print("key=%s:value=%s" % (test_1, test_2))
返回最后一个键值对
dict_08 = {"姓名": "老王", "住址": "老李隔壁", "职业":"修下水道"}
# 返回最后一个键值对
print(dict_08.popitem())
拷贝copy字典
dict_09 = {}
# 字典拷贝
dict_10 = dict_09.copy("姓名": "老王", "住址": "老李隔壁", "职业":"修下水道")
print(dict_10)
print(dict_09)
重要提示
数据类型中,我们主要对数据掌握增删改查的操作,对列表和字典的操作要熟悉。