python的数据类型
python的数据类型
一、基础语法
terminal 系统终端,命令行
python console python命令
# 单行注释
“”” “”” 多行注释
快捷多行注释 ctrl+/
输入:input
name = input(“请输入:”)
print(name ,”他是个厉害的人”)
变量的作用:存储数据
变量名规则:
1、字母 数字 _ 组成 不能以数字开头、
2、不要使用python的关键字
在python console可以查看所有的关键字
import keyword
keyword.kwlist
变量名规范:
见名知义
下划线连接
驼峰命名法
二、数据类型
1、标识符:在python 里面自己命名的东西叫标识符
变量名称是不是标识符? 是
函数名称、类名称、模块名、包名 均为标识符
2、数据类型
1)整型
age = 18 #数字、整数、小数
2)字符串
3)布尔类型 True False
4)列表 list a = [‘yuyan’,1]
5)元祖 tuple b = (‘yuyan’,1)
6)字典 dict c = {“name”:“xiaojing”,“age”:1}
7)集合 set
三、字符串
1、字符串数据左右两边必须加引号 ‘ ” “””
2、三引号可以多行打印
name_two = “”” hhhhhhhh
wozai
“””
如果字符串内部有双引号,那么用单引号表示字符串
如果字符串内部有单引号,那么用双引号表示字符串
name_three = “‘小美’很好看”
# TODO: 如果想要用字符串表示windows系统下面的路径
在字符串前加一个r’D:\test\’
file_path = r’D:\test\1.txt’
1、字符串的操作
1)字符串的拼接 +
name_one = ‘ bad’
name_two = ‘ bay’
nane_full = name_one +” + name_two
print(nane_fu1l)
2)字符串重复多次 *
name = “badboy”
print(name * 5)
3)获取字符串的某个字符
判断字符长度:len()
打印:print(len())
name = “你好 世界”
读取数据索引从0开始
name_one = name[0]
从右面开始从-1 开始
name_two = name[-1]
切片
a = “今天很好,是不是”
a_01 = a[start: end: step] 取左边,不取右边
print(a[0:2]) #今天
步长
获取所有print(a[:])
prin t(a[::2]) 步长为2 跳一个
步长如果为正,左边往右边。步长为负,右边往左边数
4)数据类型转换
age = “4”
money = “5”
将字符串转化为数字 int(str)
print(int(age)*int(money)) #20
age = 4
money = 5
将数字转化为字符串 str
print(str(age)*str(money)) #45
5)复制
可以通过索引复制,切片复制
str1 = “cainaio 666”
str2 = str1[0:]
2、字符串的内置函数操作
str1 = “my baby i love you ”
print(len(str1)) # 获取字符串长度
print(str1.upper()) #小写转大写
print(str1.upper().lower()) #在转为小写
str2 = “hapyy NEW Year”
print(str2.swapcase()) #大小写转化
1、查找 :用find
当查找不到find会报-1
if_snow = str1.find(“wo”)
print(if_snow) # -1
当find找到指定元素的时候,返回它的索引值,必须是连续的字符
if_snow1 = str1.find(“i”)
print(if_snow1)
2、index 和find 用法一样
不同的是 index 找不到时会报 ValueError
if_snow3 = str1.index(“wo”)
print(if_snow3)
3、替换replace 字符串一旦定义 除非重新赋值 不然不会发生变化
dl_name = “本本”
new_dl = dl_name.replace(“本”,”哈”)
print(dl_name) #本本
print(new_dl) #哈哈
new_dl2 = dl_name.replace(“本”,”哈”,1)
print(new_dl2) #哈本
4、统计 count
str3 = “我爱你 我爱你 我爱 我爱你 我爱你”
print(str3.count(“爱”)) #5
5、join 字符串拼接 正规方式 代替 +
s1 = “wo ”
s2 = “我的理想”
s3 = “hhh ”
print(“”.join([s1,s2,s3])) #wo 我的理想hhh
6、字符串分割 split
a = “hello world”
b = a.split(“w”) #以w 为界限分割
print(b) #[‘hello ‘, ‘orld ‘]
c = a.split(” “) #[‘hello’, ‘world’]
print(c) #[‘hello’, ‘world’]
a1 = “hello/world/soft/sfh”
b1 = a1.split(“/”)
print(b1) #[‘hello’, ‘world’, ‘soft’, ‘sfh’]
7、strip 用的多 去掉左右两边的指定字符
str3 = ” 我爱你 ”
print(str3.strip(‘ 你’)) # 我爱
8、判断字符串是不是正整数
a = ‘2345a678’
print(a.isdigit()) # f
四、列表的操作
1、列表 存储很多数据
列表可以存储不同数据类型的数据
字符串不可以修改
列表可以被修改,可变的数据类型
2、列表的操作
1、添加
1)、添加一个元素append
list1 = [“小米”]
#添加新的元素 , append 一次只添加一个 添加到*后
list2 = list1.append(“小红”)
#打印list1
print(list1) #结果[‘小米’, ‘小红’]
# 注意: 如果打印list2 报None
print(list2) #None
2)添加多个元素 extend
extend 添加多个元素 添加到*后
list1.extend([“小明”,”小黑”,”小白”,”小美”]) #添加的是列表所以用【】
print(list1) #结果:[‘小米’, ‘小红’, ‘小明’, ‘小黑’, ‘小白’, ‘小美’]
#注意:不可以连续使用2次append
# l1 = list1.append(“小区”).append(“很好”)
# print(list1) #报错
3)、向指定的位置添加 insert
输入索引及内容 list1.insert(索引值,内容)
list1.insert(1,”小小”)
print(list1) #[‘小米’, ‘小小’, ‘小红’, ‘小明’, ‘小黑’, ‘小白’, ‘小美’]
2、删除
1)删除指定的值 remove
list1.remove(“小小”)
print(list1) #[‘小米’, ‘小红’, ‘小明’, ‘小黑’, ‘小白’, ‘小美’]
2)删除指定的索引 pop
list1.pop(2)
print(list1) #[‘小米’, ‘小红’, ‘小黑’, ‘小白’, ‘小美’]
#pop()没有参数时默认删除*后一个
list1.pop()
print(list1) #[‘小米’, ‘小红’, ‘小黑’, ‘小白’]
a = list1.pop(1)
print(a) #小红 可以用变量接收
3)删除所有的元素 clear
list1.clear()
print(list1) #[]
4)del 不要去用
del list1
print(list1) #NameError: name ‘daolaos’ is not defined 没有定义
# del 从内存中全部清空
3、修改
list3 = [‘小米’, ‘小红’, ‘小黑’, ‘小白’]
list3[1] = [‘花花’]
print(list3) #[‘小米’, [‘花花’], ‘小黑’, ‘小白’]
4、列表的函数
1)index 获取索引
print(list3.index(“小米”)) #0
2)count 获取出现的次数
list4 = [‘小米’, ‘小红’, ‘小黑’, ‘小白’]
print(list4)
print(list4.count(‘小’)) #4
3)逆序 reverse 直接修改原来的变量
list4.reverse()
print(list4) #[‘小白’, ‘小黑’, ‘小红’, ‘小米’]
3)逆序2 重新创建一个变量 不会修改原来的变量
a = list4[::-1]
print(list4) #[‘小白’, ‘小黑’, ‘小红’, ‘小米’]
print(a) #[‘小米’, ‘小红’, ‘小黑’, ‘小白’]
4)排序 sort
list5 = [“p”,”k”,”l”,”a”]
list5.sort()
print(list5) #[‘a’, ‘k’, ‘l’, ‘p’]
数学排序
list1 = [1,3,5,6,2,8,7]
list1.sort()
print(list1)#[1, 2, 3, 5, 6, 7, 8]
list1.sort(reverse = True) #reverse:反转、逆序
print(list1) #[8, 7, 6, 5, 3, 2, 1]
五、字典Dict
1、列表 存储多个数据,想获取单个元素可读性不强
zxx_info=[zxx,17,”女”,”西游记”,”还珠格格”,”庆余年”,”彭于晏”,”宝强”]
如果要获取*喜欢的电视 获取麻烦 可读性差
字典 存储多个数据,想获取单个元素 用字典
有标记位 key : value
key :key值不可变类型 唯一 一般用字符串表示key值
字典表示:dict1[key值] 直接获取
zxx_info = {“name”:”祝”,”age”:17,”fava_tv”:”西游记”,”sex”:”女”,”most_tv”:”还珠格格”}
age = zxx_info[“age”]
print(age)
2、字典操作
获取字典的长度 len
zz_info = {“name”:”祝”,”age”:17,”fava_tv”:”西游记”,”sex”:”女”,”most_tv”:”还珠格格”}
print(len(zz_info)) #5
总结:
字典是无序的数据类型
那些有序 :list 有顺序,索引 字典没有索引
print(zz_info(2)) 报错
3、字典可变类型 可进行增删改查
1)增
添加*喜欢的明星
zz_info = {“name”:”祝”,”age”:17,”fava_tv”:”西游记”,”sex”:”女”,”most_tv”:”还珠格格”}
zz_info[“mingx”] = [“周杰伦”,”五月天”]
print(zz_info) #{‘name’: ‘祝’, ‘age’: 17, ‘fava_tv’: ‘西游记’, ‘sex’: ‘女’, ‘most_tv’: ‘还珠格格’, ‘mingx’: [‘周杰伦’, ‘五月天’]}
2)修改
zz_info[“mingx”] = “小妹”
print(zz_info) #{‘name’: ‘祝’, ‘age’: 17, ‘fava_tv’: ‘西游记’, ‘sex’: ‘女’, ‘most_tv’: ‘还珠格格’, ‘mingx’: ‘小妹’}
字典里面的单引号双引号没有区别 自动使用单引号
使用元素修改和元素添加的方式是一样的
当key值不存在是就添加,key值存在时,修改就会覆盖原来的数据
3)删除
随机删除
zz_info.popitem() #不带参数
print(zz_info) #{‘name’: ‘祝’, ‘age’: 17, ‘fava_tv’: ‘西游记’, ‘sex’: ‘女’, ‘most_tv’: ‘还珠格格’}
删除指定的key
zz_info.pop(“age”)
print(zz_info) #{‘name’: ‘祝’, ‘fava_tv’: ‘西游记’, ‘sex’: ‘女’, ‘most_tv’: ‘还珠格格’}
其他方式 清除
zz_info.clear()
print(zz_info) #{}
通过元组存储数据
zz_info.items()
print(zz_info.items())# dict_items ([(‘name’, ‘祝’), (‘fava_tv’, ‘西游记’), (‘sex’, ‘女’), (‘most_tv’, ‘还珠格格’)])
获取所有的key
print(zz_info.keys()) #dict_keys([‘name’, ‘fava_tv’, ‘sex’, ‘most_tv’])
获取所有的value
print(zz_info.values()) #dict_values([‘祝’, ‘西游记’, ‘女’, ‘还住格格’])
总结
字典: 1、无序 可变的类型
2、key 唯一不可变类型 value随意
3、增删改
4、items()以元组形式存储数据, keys()获取key ,values()获取value
六、元组 tuple
1、元组和列表
列表表示
list1 = [“小米”,“小红”,“哈哈”,“喜喜”]
元组表示
tuple1 = (“小米”,”小红”,”哈哈”,”喜喜”)
print(tuple1)
2、获取
获取某一个元素,索引 和列表一样
获取多个元素,切片,和列表一样
3、元组 可以添加修改删除?
不能 只能重新赋值,因为元组不可变
4、元组中含有列表 可以添加删除修改吗
tuple2 = (“小米”,”小红”,”哈哈”,”喜喜”,[“小花”,”宝宝”,”嘿嘿”])
tuple2[4] = [“风”,”雨”,”电”]
print(tuple2)#报错 不可以修改
5、修改元组中的列表
tuple2[4][0] = [“风”]
print(tuple2) #(‘小米’, ‘小红’, ‘哈哈’, ‘喜喜’, [[‘风’], ‘宝宝’, ‘嘿嘿’])
元组的不可变性 是相对的 不是说 里面的所有的内容完全不变
只要看修改的索引的前面是不是一个可变类型
例如:
tuple3 = (“小米”,”小红”,{‘name’: ‘祝’, ‘age’: 17, ‘fava_tv’: ‘西游记’})
#索引前是元组 肯定不可修改
tuple3[2] = ” 呵呵”
#tuple[2]是字典 可变
tuple3[2][“name”] = “呵呵”
print(tuple3) #(‘小米’, ‘小红’, {‘name’: ‘呵呵’, ‘age’: 17, ‘fava_tv’: ‘西游记’})
zx = [ “小米”,”小红”,(“哈哈”,”喜喜”)]
#zx[2]前面是列表 可变
zx[2] = “呵呵”
print(zx)# [‘小米’, ‘小红’, ‘呵呵’]
#元组不可变
zx[2][1] = “hehe”
print(zx) 报错
空元组
tuple4 = ()
print(tuple4) #是元组
注意:
1个元素的元素表示,不是一个元组,而是去掉括号后原始的数据类型
如果想表示一个元素的元组 在元素后面加一个逗号,
tuple4_1 = (2)
print(tuple4_1) # <class ‘int’>
tuple4_2 = (2,)
print(tuple4_2) #是元组
print(len(tuple4_2)) #1 长度为1
七、集合 set
set1 = {“小米”,”小红”,”哈哈”,”喜喜”}
print(set1) #{‘喜喜’, ‘小红’, ‘小米’, ‘哈哈’}
1、集合不是键值对 是无序的 不能通过索引获取
主要作用:重复的元素直接丢掉
set2 = {“小米”,”小红”,”哈哈”,”喜喜”,”小米”,”小红”,”哈哈”,”喜喜”}
print(len(set2)) #4
2、集合转换成列表
set2 = list(set([“小米”,”小红”,”哈哈”,”喜喜”,”小米”,”小红”,”哈哈”,”喜喜”]))
print(set2) #[‘喜喜’, ‘小红’, ‘小米’, ‘哈哈’]
总结:
元组: 1、一个元素的元组必须要加, 2、元组不可变和列表的可变性
集合: 主要 1、去重 2、无序