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用于存储数值不可改变的数据类型

Python运算符

二.字符串(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
  1. 截取从倒数第6个字符到倒数第1个字符之前的字符:
string = "Hello, World!"
substring = string[-6:-1]
print(substring)  # 输出:World
  1. 截取从索引位置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))#以元组形式输入参数时要在元组前加上“*”100

删除元组

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=tuple123#不能以该形式创建
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开始,可以使用负数索引从末尾开始计数。

集合和字典是无序的,因此不能通过索引访问元素,可以使用特定的方法或键来操作其中的元素。

列表、元组和集合可以包含不同类型的元素,而字典的键可以是任意的不可变类型,值可以是任意类型。

<think>好的,我现在需要回答用户关于Python六大数据类型的问题。首先,我得回忆一下Python的基本数据类型,确保自己没有记错。Python有六个主要的内置数据类型,不过有时候可能会有不同的分类方式,我得确认一下到底是哪六个。通常,Python的基本数据类型包括数字、字符串、列表、元组、字典和集合。不过有时候可能会有人把布尔型也算进去,但通常布尔是数字类型的一个子类型,属于整数int。所以正确的六个应该是:数字(Number)、字符串(String)、列表(List)、元组(Tuple)、字典(Dictionary)、集合(Set)。接下来,我需要逐一介绍每个类型,并给出例子。 首先,数字类型应该包括整数、浮点数、复数,还有布尔型。这部分需要注意说明不同的数字类型,比如int、float、complex,以及布尔是True和False,属于int的子类。例如,可以举一些例子,比如42,3.14,1+2j,True等。 然后是字符串,需要说明是不可变的序列,用单引号或双引号包裹,比如'hello'或者"world"。可以提到字符串的操作,如拼接、切片、索引等。 接下来是列表,列表是可变的有序集合,元素可以是不同类型,用方括号表示,比如[1, 'a', True]。需要说明列表的常用方法,如append、remove、切片等。 元组和列表类似,但是不可变,用圆括号表示,比如(1, 2, 3)。需要强调元组的不可变性,以及在性能上的优势,或者作为字典键的可能性。 字典是键值对的集合,用花括号,键必须是不可变类型,比如字符串、数字或元组。例如{'name': 'Alice', 'age': 25}。需要说明如何通过键来访问值,以及字典的方法如keys、values、items等。 集合是无序且元素唯一的,用花括号或者set()函数创建,比如{1, 2, 3}。集合支持数学上的集合运算,如并集、交集、差集等。 在组织内容时,需要按照用户的要求结构清晰,逐步介绍每个类型,并给出示例。同时,要确保所有的行内数学表达式和代码都用正确的格式,比如变量用$...$包裹,独立公式用$$...$$,但这里主要是代码示例,可能不需要数学公式,但需要正确使用代码块的标记。不过用户提到的是LaTeX语法正确,可能是指数学表达式,所以在必要的地方应用,比如如果有数学相关的例子的话。不过在这个问题中,可能更多是代码示例,所以可能需要用反引号或者代码块来展示例子。不过用户给的例子中有用$...$包裹的变量,比如$x^2$,所以如果在讲解数据类型的时候涉及到数学概念,比如集合运算,可以用LaTeX表示,例如并集$A \cup B$。 此外,用户要求使用中文回答,所以需要用中文组织内容,同时保持结构清晰,分点介绍每个数据类型,并给出示例和应用场景。需要注意避免使用Markdown格式,所以可能要用文字描述结构,比如用数字编号和项目符号,但用中文的“第一”、“第二”等来分点。 现在需要检查是否有遗漏的数据类型,或者分类是否正确。比如,有时候可能会提到bytes或者bytearray,但这些通常属于更高级的数据类型,可能不在基础六种里。所以确定六个类型是数字、字符串、列表、元组、字典、集合。 然后,需要确保每个类型的介绍准确,没有错误。比如,元组不可变,列表可变,字典的键必须不可变,集合元素唯一且无序等。这些特性需要明确说明,避免混淆。 最后,可能需要总结一下这六种类型的特点,帮助用户记忆和理解。比如,区分可变与不可变类型:列表、字典、集合是可变类型;数字、字符串、元组是不可变类型。这对用户理解Python的数据处理机制有帮助。 在写例子时,要确保代码的正确性,比如列表的例子用方括号,元组用圆括号,字典用花括号键值对,集合用花括号但不重复元素等。如果有时间的话,可以提到类型转换函数,比如int(), str(), list()等,但可能不属于基本介绍部分,用户的问题只是要求介绍六大数据类型,所以可能不需要展开。 总之,整个思考过程需要确保覆盖所有六种数据类型,正确描述它们的特性、语法和使用场景,并给出清晰的例子,同时遵循用户给出的格式要求,特别是LaTeX的行内公式和独立公式的格式,但在这个问题中可能涉及较少数学公式,更多是代码示例。不过如果有数学相关的部分,比如集合运算,应该用LaTeX表达。例如,集合的交集可以写成$A \cap B$,并集$A \cup B$等。 现在开始组织内容,分点介绍每个数据类型,结构清晰,每个类型下有小标题,然后特性、示例、用途等。用户要求结构清晰,帮助逐步解决问题,所以可能需要用步骤式的方式,但这里更多是分类介绍。因此,可以按顺序逐一介绍每个类型,每个类型单独一段,用数字编号,每个段落包括定义、特点、例子、常见操作或注意事项等。 需要避免使用Markdown格式,所以不能用井号或者星号来标记标题,而是用中文的“一、二、三”等来分点,每个点下可能再分小点,用括号或数字。例如: 一、数字(Number) 包括整数、浮点数、复数等,例如: - 整数:42 - 浮点数:3.14 - 复数:1+2j - 布尔型:True和False(属于int的子类) 二、字符串(String) 不可变的字符序列,用单引号或双引号,例如'hello',支持索引和切片。 以此类推,每个类型都这样详细说明。 同时,注意用户提到的系统级指令,所有行内数学表达式用$...$,独立公式用$$...$$,但在这个问题中可能用到的数学表达式较少,更多的是代码示例。不过如果有涉及到数学符号,如集合运算,应该正确使用LaTeX格式。 最后检查是否有语法错误,确保中文流畅,例子正确,覆盖所有六种类型,结构清晰,符合用户要求。</think>Python的六种核心数据类型可分为**不可变类型**(数字、字符串、元组)和**可变类型**(列表、字典、集合)。以下是详细说明: --- ### 一、数字(Number) **特性**:不可变,用于存储数值。 **分类**: 1. **整数(int)**:如 $x = 42$ 2. **浮点数(float)**:如 $y = 3.14$ 3. **复数(complex)**:如 $z = 1 + 2j$ 4. **布尔型(bool)**:是 `int` 的子类,取值为 `True`(等价于1)或 `False`(等价于0)。 **示例**: ```python a = 10 # 整数 b = 5.5 # 浮点数 c = 2 + 3j # 复数 d = True # 布尔值 ``` --- ### 二、字符串(String) **特性**:不可变的字符序列,用单引号 `' '` 或双引号 `" "` 包裹。 **操作**: - **索引**:`s[0]` 获取第一个字符 - **切片**:`s[1:4]` 截取第2到第4个字符 - **拼接**:`"Hello" + "World"` → `"HelloWorld"` **示例**: ```python s = "Python" print(s[0]) # 输出 P print(s[2:5]) # 输出 tho ``` --- ### 三、列表(List) **特性**:可变的有序集合,元素可为不同类型,用方括号 `[ ]` 表示。 **操作**: - **增删**:`append()`, `remove()` - **修改**:`list[0] = 新值` - **切片**:`list[1:3]` **示例**: ```python my_list = [1, "a", True] my_list.append(3.14) # 添加元素 → [1, 'a', True, 3.14] ``` --- ### 四、元组(Tuple) **特性**:不可变的有序序列,用圆括号 `( )` 表示。 **用途**:适合存储固定数据(如坐标),可作字典的键。 **示例**: ```python point = (3, 4) # 错误操作:point[0] = 5 → 会报错(不可修改) ``` --- ### 五、字典(Dictionary) **特性**:可变的键值对集合,键必须为不可变类型,用花括号 `{ }` 表示。 **操作**: - **访问值**:`dict["key"]` - **方法**:`keys()`, `values()`, `items()` **示例**: ```python student = {"name": "Alice", "age": 20} print(student["name"]) # 输出 Alice ``` --- ### 六、集合(Set) **特性**:无序且元素唯一,用花括号 `{ }` 或 `set()` 创建。 **数学运算**: - 并集:$A \cup B$ → `A | B` - 交集:$A \cap B$ → `A & B` **示例**: ```python s = {1, 2, 2, 3} # 自动去重 → {1, 2, 3} ``` --- ### 总结 | 类型 | 可变性 | 示例 | 典型用途 | |--------|--------|------------------------|------------------| | 数字 | 不可变 | `42`, `3.14`, `True` | 数值计算 | | 字符串 | 不可变 | `"Hello"` | 文本处理 | | 列表 | 可变 | `[1, "a", True]` | 动态数据集合 | | 元组 | 不可变 | `(1, 2)` | 固定数据存储 | | 字典 | 可变 | `{"name": "Alice"}` | 键值对映射 | | 集合 | 可变 | `{1, 2, 3}` | 去重、集合运算 | 通过理解这些类型的特点,可更高效地选择合适的数据结构解决问题。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值