python数据类型和深浅拷贝

发布时间:2024年01月24日

1. 基本数据类型

基本数据类型都是可变数据类型

int -- 整数类型

可以表示任意大小的整数,它可以使用非常大的整数而不会溢出

num = 10  # 定义整数类型
print(num)
print(type(num))  # type() 返回数据类型
int(num) # 将变量转换为int类型


# 输出结果
10
<class 'int'>

float -- 浮点数类型

通常情况下,浮点数占用64位的存储空间

fl = 3.14
print(fl)
print(type(fl))


# 输出结果
3.14
<class 'float'>

bool -- 布尔类型

bool类型只有两种取值:True和False,True默认值为1,False默认值为0。

除False、0、0.0、空序列(如空列表[],空字典{}...)、None之外都为True

b1 = True  # True 默认代表 1
b2 = False  # False 默认代表 0
print(b1)
print(type(b1))
print(b2)
print(type(b2))
print(b1 + b2)

# 输出结果
True
<class 'bool'>
False
<class 'bool'>
1

str -- 字符串类型

使用单引号'',或双引号""或三引号''' '''、""" """引起来的内容称之为字符串。

字符串可以通过下标取值,如s[0] -> 取出字符串s下标为0的字符

字符串可以通过"+"的方式拼接

str1 = "abcd123#%%&啊啊啊"
print(str1)
print(len(str1))  # 输出字符串的长度
print(type(str1))

# 输出结果
abcd123#%%&啊啊啊
14
<class 'str'>

切片

字符串可以通过切片的方式取出子字符串

s[0, 4] -> 左闭右开,取出从左下标到右下标之前的部分字符串

s[0, 4, 2] -> 表示每次取离当前元素x个下标的字符,如s="abcdefg",此时s[0, 4, 2]的取值为"ac"

s[-4, -1] -> 负数表示从后往前的下标,-1表示最后一个元素,-2是倒数第二个元素,以此类推,其使用方式与正数下标同理

2. 可变数据类型和不可变数据类型

可变数据类型

可变数据类型是指:当元素值发生改变时,其内存地址值不发生改变的数据类型

可变数据类型包括:

列表(list)、字典(dict)、集合(set)

不可变数据类型

不可变类型是指:当元素值发生改变,其内存地址值也发生改变的数据类型

不可变数据类型包括:

基本数据类型

????????整数类型(int)、浮点数类型(float)、布尔类型(bool)、字符串类型(str)

和元组(tuple)

3. 容器类型的数据类型

list -- 列表

列表里面可以存储任意数据类型

可以通过下标和切片的方式获取或访问列表的内容

列表中,append()用于向列表末尾添加元素,insert()用于在指定位置插入一个元素,remove()用于删除列表中指定的元素等

# 列表 -- 可变数据类型
list1 = [1, 2, 3, 4, 5, 'a', 'b', 'c']
# 查询
print(len(list1))  # 长度
print(list1[3])  # 下标取值
print(list1[-1])
print(list1[:])  # 切片
print(list1[::-1])  # -1为步长可反转

# 修改
list1 = [1, 2, 3, 4, 5, 'a', 'b', 'c']
list1[6] = 'h'
print(list1)

# 删除
list1 = [1, 2, 3, 4, 5, 1, 'a', 'b', 'c']
# 1.pop删除 -- 下标
list1.pop() # 默认删除最后一个元素,也可以指定下标
print(list1)
list1.pop(4)
print(list1)
# 2.remove删除 -- 指定一个具体元素 从前往后
list1.remove("a")
list1.remove(1)
print(list1)
# 3.del关键字删除
del list1[2]
print(list1)
# 4.clear 清空列表
list1.clear()
print(list1)

# 新增
list1 = [1, 2, 3, 4, 5, 1, 'a', 'b', 'c']
list1.append("d")
print(list1)
list1.append(['l', 'o', 'l', 'k'])  # 可以添加容器类型数据
print(list1)
list1.extend(['l', 'o', 'l'])  # 将容器拆分添加进来
print(list1)
# 嵌套提取列表的值
print(list1[-4][-1])

tuple -- 元组

元组创建之后,只能进行查询,无法进行插入、修改、删除操作

# 元组 -- 不可变数据类型
t1 = 1, 2, 3, 4, 5, 67, 89, 90, 5, 4, 3, 2, 1
# 查询
print(t1[::-1])
print(t1.count(1))  # 获取该元素的出现次数
print(t1.index(1))  # 获取该元素从左往右第一次出现的下标
t2 = ()  # 创建空元组
print(type(t2))

dict -- 字典

字典是一种键值对的结构(key: value),其中key在字典中不会重复且必须是不可变类型,如果插入重复的key,会将其value值进行覆盖,value可以重复

# 字典 -- 可变的数据结构
# 查询
dict1 = {'name': 'litie', 'age': 20, 'sex': '男'}
print(dict1['name'])  # 通过key获取value值
print(dict1['age'])
print(dict1['sex'])

print(dict1.keys())  # 获取所有的key
print(dict1.values())  # 获取所有的value
print(dict1.items())  # 获取所有的键值对

# 快速创建字典
dict2 = dict(a=1, b=2, c=3)
print(dict2)
print(type(dict2))
# 增加数据 update
dict2.update({'d': 4})
print(dict2)
# 如果key已存在,会进行覆盖
dict2.update({'d': 44, 'e': 55, 'f': 66})
print(dict2)
# setdefault 新增但会保留原数据不会覆盖
dict2.setdefault('a', 666)
dict2.setdefault('k', 777)
print(dict2)

# 修改
dict2 = dict(a=1, b=2, c=3, d=44, e=55, f=66)
print(dict2)
dict2['a'] = 666
print(dict2)

# 删除
dict2 = dict(a=1, b=2, c=3, d=44, e=55, f=66)
print(dict2)
dict2.pop('a')
print(dict2)
# 清空
dict2.clear()
print(dict2)

set -- 集合

集合无法通过下标查询数据,也无法修改数据,里面的数据内容不可以重复,如果插入重复的内容不会在其内部新增。

# 集合 -- 可变数据结构,无法通过下标查询,无法修改
# 创建空集合
set1 = set()
print(type(set1))
# 新增,会自动去重,所以已有数据的新增无效
set1 = {1, 2, 3, 4, 5, 6, 7, 3, 5, 2, 6, 1, 7, 3, 6, 2, 4, 3, 7}
print(set1)
print(len(set1))
# add 新增
set1.add(9)
print(set1)
# update 新增其他容器类型数据,会拆分
set1.update([11, 22, 33])
print(set1)

# 删除 remove,如果没有该元素会报错
set1 = {1, 2, 3, 4, 5, 6, 7, 3, 5, 2, 6, 1, 7, 3, 6, 2, 4, 3, 7}
set1.remove(3)
print(set1)

列表、元组、集合互相转换

列表、元组、集合之间可以进行互相转换

# 列表、元组、集合互相转换
# 集合转列表
set1 = {1, 2, 3, 4, 5, 6, 7, 3, 5, 2, 6, 1, 7, 3, 6, 2, 4, 3, 7}
list1 = list(set1)
print(list1)
print(type(list1))
# 元组转列表
t1 = (1, 2, 3, 4, 5, 6)
list2 = list(t1)
print(list2)
print(type(list2))

4. 深浅拷贝

文章来源:https://blog.csdn.net/m0_64318128/article/details/135819278
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。