python六大基础数据类型解析
不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组)
可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)
type() 方法可以判断数据的类型。
六大数据类型:
一.数字型(number)
int:整型
float:浮点型(有精度缺失问题)
bool:布尔类型:True False 真假/1和0(一定要大写)(Python3 中,bool 是 int 的子类,True 和 False 可以和数字相加)
complex:复数类型(复数由实数部分和虚数部分构成,可以用 a + bi,或者 complex(a,b)表示, 复数的实部 a 和虚部 b 都是浮点型)
number用于存储数值不可改变的数据类型
二.字符串(string)
由数字、字母、下划线组成的一串字符
字符串截取
在Python中,可以使用切片操作来截取字符串。切片操作使用方括号 [],并且可以指定起始索引和结束索引来截取字符串的一部分。
- 截取从索引位置0到索引位置3之前的字符:
string = "Hello, World!"
substring = string[0:3]
print(substring) # 输出:Hel
- ` 其中截至位置可省略,默认为最后末尾处,截取从索引位置2到字符串末尾的字符:
string = "Hello, World!"
substring = string[2:]
print(substring) # 输出:llo, World!
- 其中起始位置可省略,默认从0开始,截取从字符串开头到索引位置5之前的字符:
string = "Hello, World!"
substring = string[:5]
print(substring) # 输出:Hello
- 截取从倒数第6个字符到倒数第1个字符之前的字符:
string = "Hello, World!"
substring = string[-6:-1]
print(substring) # 输出:World
- 截取从索引位置1到索引位置9之间,每隔一个字符的字符:
string = "Hello, World!"
substring = string[1:9:2]
print(substring) # 输出:el,W
字符串的索引默认是从0开始的,而结束索引是不包含在截取结果中的。
三.列表(List)
python的列表可以完成大多数集合类的数据结构实现。支持字符,数字,字符串甚至可以包含列表(即嵌套或者多维列表,可以用来表示多维数组)。PS:列表中的元素可以是重复的,且列表是有序的。
列表的创建
使用方括号“[]”来定义列表,或使用list[]创建列表,列表可以包含任意类型的元素,列表中的多个元素使用“,”隔开。
a = list[1,2]
b=[1,2]
print(type(a))
print(type(b))
<class 'types.GenericAlias'>
<class 'list'>
列表的相关操作
函数名 | 效果 |
---|---|
print(abc[0]) | 直接按索引查询即可 |
列表名.sort() | 默认升序排列(永久更改元素顺序)(key:表示指定一个从每个列表元素中提取一个比较键。) |
列表名.sort(reverse=True) | 降序排列(永久更改元素顺序)(列如,设置“key=str.lower”表示在排序时不区分字母的大小写) |
列表名.append() | 向列表末尾添加元素 |
列表名.insert(位置,内容) | 在指定位置插入元素 |
del 列表名[] | 按照索引删除(del是一种操作语句) |
列表名.pop() | 按照索引删除默认删除最后一个 |
列表名.remove(’’) | 删除指定内容,列表中没有指定内容会报错 |
列表名[1] = ‘d’ | 按照索引更改指定内容 |
列表名.reverse() | 反转列表 |
print(len(列表名)) | 获取表长 |
print(max(列表名)) | 获取最大值,此时列表中仅能存在数值类型的元素,否则会报错 |
print(min(列表名)) | 获取最小值,此时列表中仅能存在数值类型的元素,否则会报错 |
print(列表名.count()) | 统计某元素出现次数 |
新列表名=列表名 | 浅拷贝(修改一个会影响另一个) |
新列表名=列表名[:] | 深拷贝(修改一个不会影响另一个) |
新列表名= 列表名.copy() | copy函数拷贝(修改一个不会影响另一个) |
print(列表名.index()) | 获取某元素索引(若有重复元素,index仅显示首次出现的索引位) |
列表名.extend(列表名2) | 追加列表2至列表1的末尾 |
[1]+[2] | 列表拼接 |
[]*n | 将列表中的内容复制n次,添加至列表 |
列表名.clear() | 清空列表 |
abc=[7,3,4,5,1,2,6,8,9,10]
print(abc[0])#按照索引查找
print(abc[0:3])#输出前三格元素
print(abc[:])#输出所有元素
print(abc[::2])#步长为2,若为负数逆向取值
print(sorted(abc))#临时排序
abc.sort(reverse=True)#永久降序排序
abc.sort()#永久升序排序
abc.append('末尾添加')
abc.insert(3,'指定位置插入')
del abc[0]#按照索引删除,,一次删除一个del是操作语句
abc.pop(3)#按照索引删除,一次删除一个,默认删除最后一个
abc.remove('末尾添加')#删除指定内容,一次删除一个
abc[3]='按照索引更改指定内容'
abc.reverse()#反转列表
print(len(abc))#输出表长
print(abc.count(10))#统计元素出现次数
print(abc.index(2))#获取指定元素索引脚标,若有重复元素仅显示第一次出现的位置
bcd = ["b,c,d"]
abc.extend(bcd)#向abc列表末尾插入bcd列表
print(abc+bcd)#列表拼接
print([abc]*4)#复制n次列表中的内容并添加至列表
abc.clear()#清空列表
输出结果
四.元组(tuple)
python的元组类似于list列表,元组用 () 标识。内部元素(可重复且有序)用逗号隔开。但是元组不能二次赋值,相当于只读列表,虽然tuple的元素不可改变,但它可以包含可变的对象,比如list列表 可以将元组转化为列表更改元素
元组的索引、截取、拼接、重复与列表一样,可以通过索引访问元组的元素
元组中主要使用的函数:
函数 | 效果 |
---|---|
index() | 获取指定元素在元组内的下标 |
count() | 统计指定元素在元组内出现的次数 |
tu = (1,1,1,1,2,3,4,5,6,7,8,9)
print(tu.count(1))#统计元素出现次数
print(tu.index(1))#获取指定元素索引脚标,若有重复元素仅显示第一次出现的位置
4
0
可以使用拆包(unpacking)的方式将元组的元素赋值给多个变量。(任何可迭代对象均支持解包,其中字典解包后仅会提取key,不会提取value)
tu=(1,2,3)
a,b,c,=tu
print(a)
print(b)
print(c)
1
2
3
#或只需要一个变量例如我们只需要“c”
tu=(1,2,3)
_,_c,=tu#用“_”占掉我们不需要的元素
print(c)
3
#如果有大量无用元素,仅有少量所需则可以用*var-name的方法代表剩余的元素,在python里常用这种方法来代表不确定数量的参数
tu = (1,1,1,1,2,3,4,5,6,7,8,9)
a,b,*c=tu
print(a)
print(b)
print(c)
print(*c)#使用“*var_name”指代时打印时要带上*否则会以列表形式输出
print(type(c))
1
1
[1, 1, 2, 3, 4, 5, 6, 7, 8, 9]
1 1 2 3 4 5 6 7 8 9
<class 'list'>
可以将元组作为整个参数输入函数
例如:divmod(a,b):a,b是两个数,这个函数返回一个元组,这个元组为(a//b,a%b),即返回
a除以b,a%b的结果组成的元组。
a=(100,10)
print(divmod(*a))#以元组形式输入参数时要在元组前加上“*”
(10,0)
删除元组
tu = (1, 2, 3, 'a', 'b', 'c')
del tu # 因由于元组不可变,因此删除里面到元素,但可删除整个元组
print(tu) # 此时打印会报错
创建元组的特殊规则
构造包含 0 个或 1 个元素的元组比较特殊,有一些额外的语法规则:
对于空元组直接用小括号或者tuple()表示,
对于1个元素的元组,则需要在元素后面添加逗号
a=()#创建一个空元组
b=tuple()#创建一个空元组
c=(1,)#创建只有一个元素的元组,需要在元素后面加一个逗号
d = (1,2,3)
e=tuple(1,2,3)#不能以该形式创建
print(type(a))
print(type(b))
print(type(c))
print(type(d))
<class 'tuple'>
<class 'tuple'>
<class 'tuple'>
<class 'tuple'>
f= (1) # 如果使用小括号又不加逗号创建一个元素,这个是int型,不是元组
print(type(f))
<class 'int'>
五.集合(set)
python的集合(set)是由一个或数个形态各异的大小整体组成的无序整体,因此不能通过脚标取值,构成集合的事物或对象称作元素或是成员;基本功能是进行成员关系测试和删除重复元素
集合的创建
可以使用大括号 { }(仅用“{}创建集合时,集合中必须有内容”能传元组,集合,字典) 或者 set() 函数创建集合
即:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典
集合的操作添加与删除
函数名 | 作用 |
---|---|
集合名.add() | 添加函数,添加单个元素 |
集合名.update() | 添加多个元素(可以是列表,元组,集合,字典等),元素间用“,”隔开或者更新集合,如果有重复的元素会自动舍去,只保留一个 |
集合名.pop() | 随机删除一个元素 |
集合名.remove() | 删除指定值,若集合中没有指定元素则会报错 |
集合.名clear() | 清空集合内容 |
del 集合名 | 删除集合 |
a={1,1,1,2,5,3,5,4}}#集合中的元素不重复,好像还会自动排个序?
a.add(6)
a.update((7,8,9,9,9,9))#一次添加多个元素,添加形式可以是列表,元组,,集合字典等
a.pop()#随机删除一个元素,若为空集合会报错,但我测试下来好像默认删除第一个,
a.discard(3)#删除指定元素
a.discard(10)#如果不存在该元素也不会报错
a.remove(9)#删除指定元素,若不存在则会报错
a.clear()#清空合集内容
del a#删除合集
{1, 2, 3, 4, 5}
{1, 2, 3, 4, 5, 6}
{1, 2, 3, 4, 5, 6, 7, 8, 9}
{2, 3, 4, 5, 6, 7, 8, 9}
{2, 4, 5, 6, 7, 8, 9}
{2, 4, 5, 6, 7, 8, 9}
{2, 4, 5, 6, 7, 8}
set()
集合运算
函数表达式 | 效果 |
---|---|
S1 & S2 或 S1 . intersaction ( S2 ) 交集 | 返回一个同时存在于两集合的元素的新集合 |
S1^S2 或S1.synmetric_difference ( S2 ) 反交集/补集 | 返回一个两集合中不重复的元素的新集合,即去除两集合的相同元素 |
S1|S2 或 S1 . union ( S2 ) 并集 | 返回一个包含两集合所有元素的新集合 |
S1 - S2 或 S1 . difference ( S2 ) 差集 | 返回一个仅存在S1中的元素的集合,即去除S1中S2所含的元素 |
S1 <= S2 或 S1 . issubset ( S2 ) 子集测试 | 如果 S1与S2相同或S1是S2的子集,返回 True ,否则返回 False 。可以用 S1<S2 判断S1是否是S2的真子集 |
S1 >=Т或 S2 . issuperset (S2) 超集测试 | 如果 S1 与 S2 相同或 S1 是 S2 的超集,返回 True ,否则返回 False 。可以用S1>S2判断S1是否是S2的真超集 |
.isdisjoint() | 判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。 |
a={1,2,3,4,5,6,7}
b={1,2,3,"a,b,c"}
print(a&b)
print(a^b)
print(a|b)
print(a-b)
print(a<=b)
print(a>=b)
print(a.isdisjoint(b))
{1, 2, 3}
{'a,b,c', 4, 5, 6, 7}
{1, 2, 3, 4, 5, 6, 7, 'a,b,c'}
{4, 5, 6, 7}
False
False
False
六.字典(Dictionary)
字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型;
列表是有序的对象集合
字典是无序的对象集合
字典的创建
使用花括号{}(仅创建空字典,有内容的化为集合)或dict()函数来定义字典,字典中的元素是键值对(key:value)的形式,由无序的索引(key)和它对应的值value组成
- 可以通过键来访问、修改和删除字典中的值
- 字典取值,字典当中的元素是通过键(key)来存取的,而不是通过偏移存取
函数 | 效果 |
---|---|
keys() | 获取字典中所有的键 |
values() | 获取字典中所有的值 |
- 键(key)必须使用不可变类型(数字、字符串、元组)
- 在同一个字典中,键(key)必须是唯一的
字典的添加与删除
注意事项
列表、元组、集合和字典都可以进行迭代操作,可以使用for循环遍历其中的元素。
列表和元组可以通过索引访问元素,索引从0开始,可以使用负数索引从末尾开始计数。
集合和字典是无序的,因此不能通过索引访问元素,可以使用特定的方法或键来操作其中的元素。
列表、元组和集合可以包含不同类型的元素,而字典的键可以是任意的不可变类型,值可以是任意类型。