1.Int
整数:int 可以表示正数、负数、零,主要用来进行数学运算。对于整数还可以进行位运算,共有6种位运算:取反(~)、左移(<>)、异或(^)、按位或(|)、按位与(&)。
int()数据类型能够转换成整数(文字、小数类字符串不能,浮点数转换直接抹零取整)。
整数的进制:
二进制表示形式:0b1101 (0,1)
八进制表示形式:0o15457 (0-7)
十六进制表示形式:0x45758329 (0-9,A,B,C,D,E,F)
int("字符串",进制),将指定进制的字符串转为十进制
bin(十进制),返回十进制对应的二进制,0b开头二进制
oct(十进制),返回十进制对应的八进制,0o开头八进制
hex(十进制),返回十进制对应的十六进制,0x开头十六进制
a = 10
print(a, type(a))
# 二进制
a = 0b0
a = 0b10
a = 0b100
a = 0b101010
a = 0b1111
print(a, type(a))
a = 88
a = 99
a = 20
print(bin(a))
# 十六进制
a = 0xa4
a = 0xb6
print(a, type(a))
a = 520
a = 666
print(hex(a))
# 八进制
a = 0o135
a = 0o333
print(a, type(a))
a = 45
a = 99
print(oct(a))
print(int('10', 8))
2.Float
浮点数:float,小数点表示,科学计数法。浮点数是有整数部分和小数部分组成,浮点数也称为小数。在进行浮点数进行计算时,可能会出现小数位数。不确定的情况(整数运算永远是最精确的,而浮点数运算则可能会有四舍五入的误差),
浮点数写法:1.23,-9.12,1.26x10^5,12.3e5。
3.Bool
布尔值:bool(True或False)布尔值只有True和False两个值,分别映射为整数1和0。
b=False;b=bool(True)。
布尔类型可以通过布尔表达式取值,布尔比较运算符有6种:小于()、大于等于(>=)、等于(==)、不等于(!=)。
对于布尔类型还可以进行逻辑运算,有3种运算:逻辑非(not)、逻辑非或(or)、逻辑与(and)。
布尔类型在编程中的应用场景:
条件判断:布尔类型常用于条件语句中,根据条件的真假执行相应的代码块。条件判断用法参考:Python中的条件语句
循环控制:布尔类型常用于循环语句中,根据条件的真假控制循环的执行和退出。循环语句用法参考:Python循环语句介绍
数据过滤:通过布尔类型可以筛选和过滤数据,只选择满足条件的数据进行处理。
状态标记:布尔类型可以用来表示某种状态,比如程序运行状态、开关状态等。
4.Str
字符串:str,双引号、单引号,单引号、双引号必须交叉使用,三引号,特殊注释。
字符串是可迭代Iterable,for c in "str",单纯拿到每一个字符。
在Python中,字符串可以像列表一样进行遍历。可以使用for循环来遍历字符串中的每一个字符。
字符串常见操作:
# 从左 szd 排第几 无报错
print("xkszdbszdwsjd".index("szd"))
# 从右 szd 排第几 无报错
print("xkszdbszdwsjd".rindex("szd"))
# 从左 szd 排第几 无报-1(查找子串,并返回第一个匹配的位置,找不到返回-1)
print("xkszdbszdwsjd".find("szd0"))
# 从右 szd 排第几 无报-1
print("xkszdbszdwsjd".rfind("szd0"))
# 从左 szd 出现次数
print("xkszdbszdwsjd".count("szd0"))
# 首字母大写
print("xkszd bszdwsjd".capitalize())
# 小写转大写
print("XKszd bszdwsjd".upper())
# 大写转小写
print("XKszd bszdwsjd".lower())
# 大小写转换
print("XKszd bszdwsjd".swapcase())
# 单词首字母大写,其他小写
print("XKszd bszdwsjd".title())
# 长为20的字符串xk左右由&填补
print("xk".center(20, "&"))
# 长为20的字符串xk为首右边由&填补
print("xk".ljust(20, "&"))
# 长为20的字符串xk为首左边由&填补
print("xk".rjust(20, "&"))
# 长为20的字符串xk为首左边由0填补
print("xk".zfill(20))
# 使用[start:end]进行切片,返回包括start但不包括end的字符串
# 可以省略start或end,表示从开头或到结尾
# 判断字符串是否以”szd"结尾
print("xkszdbszdwsjd".endswith("szd"))
# 判断字符串是否以”xk"开头
print("xkszdbszdwsjd".startswith("xk"))
# 将字符串中的“szd”分割掉(将字符串按指定的分隔符分割成列表)
r = "xkszdbszdwsjd".split("szd")
print(type(r), r)
# 将分割部分用“&&”填补(拼接,将列表按指定的分隔符拼接成字符串)
print("&&".join(r))
# 将字符串中的"bszdwsjd"替换为"wskz"(替换子串)
print("xkszdbszdwsjd".replace("bszdwsjd", "wskz"))
print("".isalpha())
5.None
空值:NoneType
None表示空值,一个特殊Python对象,None的类型是NoneType。
None是NoneType数据类型的唯一值,我们不能创建其它NoneType类型的变量,但是可以将None赋值给任何变量。
None不支持任何运算
None和任何其他数据类型比较永远返回False
None有自己的数据类型NoneType,不能创建其他NoneType对象。(它只有一个值None)
None与0、空列表、空字符串不一样。
None赋值给任何变量,也可以给None值变量赋值
None没有像len、size等属性,要判断一个变量是否为None,直接使用。
6.List
在Python中,可以使用方括号([ ])来定义列表,列表可以包含任意类型的元素,包括数字、字符串、布尔值、列表等,还可以使用list()
内置函数将其他类型的数据转换为列表,要访问列表中的元素,可以使用索引值,索引从0开始。
方式一:for e in l6:不关注索引,直接获取元素。
方式二:for i in range(len(l6)):关注索引,通过索引获取列表内容。
列表常见操作:
l = [1, 3, 5]
# 默认在末尾插入指定数字
l.append(7)
print(l)
# 定点插入(在指定位置插入指定元素)
l.insert(1, 2)
print(l)
# 在末尾添加10个数
l.extend(range(10))
print(l)
# 删除索引为5的数
l.pop(5)
print(l)
# 删除从左往右第一个1(如果不存在则报错)
l.remove(1)
print(l)
# 查找6的索引(查找指定数字索引)
r = l.index(6)
print(r, l)
# 统计列表中6的个数(统计元素出现次数)
r = l.count(6)
print(r, l)
# 逆序排列
l.reverse()
print(l)
# 默认升序排列(加入“reverse=True”则为降序排列)
l.sort()
print(l)
l.sort(reverse=True)
print(l)
# 清空列表
l.clear()
print(l)
7.Tuple
元组是一个不可以改变的列表,任意数据类型都可以放在元组中。元组是不可以变的,内容一旦确定意味着内存固定了,内存管理更加高效,没有多余的修改操作;元组确定代表内部元素确定,不意味内部存储的列表不可以改变。
Id:方法可以返回变量的唯一标识
方式一:()
注意事项:如果只有一个元素 则逗号不可以省略,省略了变成单个数值
(10,);a = (10, 20);a = 10, ;a = 10, 20, 30;
a, b=10, 20 不是元组,而是把10赋予a 20赋予b
方式二:tuple(可迭代)
元组常见操作:
"""
列表是可以改变的
拥有方法 append insert extend
pop remove clear
reverse sort
index count
元组是不可以改变的,一旦确定不可修改
index(value) 返回元素对应索引,找不到报错
count(value) 返回元素出现次数,找不到返回0
凡是可以使用元组的地方都可以使用列表
"""
t0 = ()
print(t0, type(t0))
t1 = (1,)
print(t1, type(t1))
t2 = (1, 2, 3)
print(t2, type(t2))
t3 = 1, 2, 3
print(t3, type(t3))
t4 = tuple("xk")
print(t4, type(t4))
t5 = tuple(range(10))
print(t5, type(t5))
t6 = tuple([1, 2, 3, 4, 5])
print(t6, type(t6))
t7 = (1, 1.1, "xk", False, True, None, [], range(10))
print(t7, type(t7))
l0 = [1, 2, 3]
print(id(l0))
l0.insert(0, 0)
print(id(l0))
t8 = ("xk", 417, l0)
print(id(t8))
t8 = (417, "xbsr")
print(id(t8))
t9 = (1, 2.2, "xk", True)
8.Dict
特性:类似列表,一个变量可以存储多个值
优点:通过键可以快速的获取值,列表获取目标元素 需要从列表的第一个元素开始逐个获取对应的内存地址。
缺点:需要额外存储一些键。
方式一:{},键与值之间使用冒号,多个键值对之间使用逗号隔开。
方式二:dict、dict(),空字典;dict(a=10,b=20),指明键和值。
键与值:键是不可变类型,99.99999的键都是字符串;值可以是任意数据类型。
字典常见操作:
"""
num
str
bool
None
list:一个变量可以存储多个数据
tuple:不可变的 内存管理更高效
dict:一个变量可以存储多个数据(通过键值对的形式)
优点:通过键快速获取对应的值
缺点:需要额外存储一些键
"""
d0 = {}
print(d0, type(d0))
d1 = {
"name": "xk",
"gx": "xql"
}
print(d1, type(d1))
print(d1, len(d1))
d2 = dict()
print(d2, type(d2))
d3 = dict(a=1, b=2, c=3)
print(d3, type(d3))
d4 = {
"id": 238,
"name": "空",
"age": None,
"houses": ["cgh", "望舒"],
"friend": ("twt", "shen", "sw"),
"hobbys": {
"1": "mr",
"2": "tl"
}
}
print(d4)
d4["sex"] = "xiao"
d4["sex"] = "hfyc"
d5 = {
1: "ha",
1.1: "haha",
(): "ha",
None: None,
True: "bool",
False: "ha",
"h": "ha"
}
print(d5)
d6 = {}
# 添加 变量名 [键名] = 值
d6["id"] = 238
d6["name"] = "xk"
print(d6, len(d6))
# 遍历所有的键
for k in d6.keys():
print(k, d6[k])
# 遍历所有的值
for v in d6.values():
print(v)
# 遍历所有的键值对
for k, v in d6.items():
print(k, v)
# 删除指定的键 并且返回对应的值
r = d6.pop("id")
print(r, d6)
# 删除并且返回(元组)最后放入的一个键值对 一般不关注字典键值对的先后顺序
r = d6.popitem()
print(r, d6)
# 在原字典中添加键 合并一个字典到原始字典
d6.update({
"age": True,
"ha": "haha"
})
print(d6)
# 获取“age”键对应的值(获取指定键对应分支)
r = d6.get("age")
print(r)
# 键不存在返回None
r = d6.get("name")
print(r)
# 指定键不存在时返回的默认值
r = d6.get("name", "空")
print(r)
# 清空字典
d6.clear()
print(d6)
9.Set
可以存放多个元素
特性:不重复,可以用于去重;无序,不可以使用下标。
遍历:for e in {1,3,4,5}: 将集合中的每一个元素依次赋予e。
方式一:{a,b,c,d},缺点:不能定义空集合。
方式二:set(),空集合;set(Iterable),将可迭代类型元素依次放入集合。
集合常见操作:
# 可以存放多个元素
# 特性:不重复 无序(不可以使用下标)
# 方式一 不能定义空集合
s0 = {1, 2, 3, 4, 5, 6}
print(s0, type(s0))
# 方式二 将可迭代类型元素放入集合
s1 = set() # 空集合
print(s1, type(s1))
s2 = set(range(10))
print(s2, type(s2))
# 特性 去除重复元素
s3 = {1, 2, 3, 4, 5, 6, 5, 4, 3, 2, 1}
print(s3, type(s3))
s4 = {3, 4, 2, 6, 1, 5}
print(s4, type(s4))
# 将集合中的元素依次赋予e
for e in s4:
print(e)
s5 = {1, 2, 3}
# 添加元素
s5.add(6)
print(s5)
# 合并集合
s5.update({4, 5, 7, 8})
print(s5)
# 移除指定元素
s5.remove(4)
print(s5)
# 删除指定元素 不存在报错
s5.discard(1)
print(s5)
# 任意删除一个元素 并返回删除的元素
r = s5.pop()
print(r, s5)
r = s5.pop()
print(r, s5)
r = s5.pop()
print(r, s5)
# 清空
s5.clear()
print(s5)
s6 = {4, 1, 7}
s7 = {1, 2, 3}
# 交集 两者都有
s8 = s6.intersection(s7)
print(s8, s7, s6)
# 差集 自己有 别人没有
s9 = s6.difference(s7)
print(s9, s6, s7)
# 并集 一方有即可
s10 = s6.union(s7)
print(s10, s6, s7)