Python数据类型总结

mac2026-06-13  0

概述

在Python中,一切皆为对象!数据类型也不例外。 Python中所有数据类型、数据结构都是类,每个变量都是类的实例。 没有基础数据类型的概念,但标准库中拥有一个小的内建类型集合,这类“单值”类型为了方便有时被称为标量类型。 Python有6种数据类型:数字、字符串、元组、列表、集合、字典。(布尔类型是int的子类) 我们分两大部分来介绍,一部分,是基础类型,或者说标量类型,主要是数字和字符串;另一部分,是结构类型,包括:列表、元组、集合、字典。

一、标量类型

类型描述NonePython的‘null’,只存在一个实例str字符串类型,包含Unicode(UTF-8)字符串bytes原生ASCII字节(或者Unicode编码字节)float双精度64位浮点数值(请注意,没有独立的double类型)boolTrue或Falseint任意精度整数

标准库中含有datetime模块,也会在这个部分单独介绍。

1.数值类型

基础数据类型就int和float。 Python3不再区分整数和长整数,int可以储存任意大小数字。每一个浮点数都是双精度64位数值。 f = 7.234 f = 6.78e-5

2.字符串

普通字符串:’’ 或 “” 原始字符串:在普通字符串前加r。 长字符串(包含换行、缩进等):‘‘‘ ’’’或“““””” **Python的字符串是不可以修改的。

>>> a = ‘this is a string’ >>> a[10] = ‘f’ TypeError

3.字节与Unicode

Bytes用于更好的兼容处理ASCII和非ASCII文本。我们可以使用encode方法将Unicode字符串转换为UTF-8字节:

>>> str_utf8 = str.encode(‘utf-8’) >>> str_utf8 >>>b’str’ >>>type(str_utf8) Bytes

也可以定义byte字符串: Str = b’str’

4.布尔型

bool是int的子类,只有两个值:True, False

5.None

None是Python的null值类型。如果一个函数没有显示的返回值,则它隐式地返回None。也可以作为函数参数的默认值。 从技术角度,None不仅是关键字,还是NoneType类型的唯一实例。

>>>type(None) NoneType

6.类型转换

str、bool、int、float既是数据类型,也是数据转换的函数。

>>> s = '3.1415' >>> type(float(s)) <class 'float'>

隐式类型转换:

操作数1操作数2隐式转换类型boolintintbool,intfloatfloat

7.日期和时间

Python中内建的datetime模块,提供了datetime、date和time类型。

>>> from datetime import datetime,date,time >>> dt = datetime(2019,10,31,20,20,10) >>> dt.day

31

二、结构类型

Python的数据结构简单但强大。精通这些数据结构是成为优秀Python编程者的必要条件。常用数据结构有:元组、列表、集合、字典。

1.元组tuple

元组是一种固定长度、不可变的对象序列。 创建:(,) 或 tuple函数 *小括弧也可以省略

>>> tup = 4,5,6 >>> tup

(4, 5, 6) 可以通过[序号]访问,索引从0开始。元组一旦创建,各个位置上的对象是无法更换的,但如果元组中存储的对象是可以修改的。

>>> tup = tuple(['foo',[1,2],True]) >>> tup[1].append(3) >>> tup ('foo', [1, 2, 3], True) 号可以连接元组生成新元组,将元组乘以整数生成多份拷贝的元组。 >>> ('a', 'b') * 3 ('a', 'b', 'a', 'b', 'a', 'b') 元组拆包 >>> tup = (4, 5, 6) >>> a, b, c = tup >>> tup = 4, 5, (6, 7) >>> a, b, (c, d) = tup 变量交换值的表达 >>> a, b = 1, 2 >>> b, a = a, b

遍历

>>> seq = ((1, 2, 3), (4, 5, 6), (7, 8, 9)) >>> for a, b, c in seq: ... print('{0},{1},{2}'.format(a, b, c)) ... 1,2,3 4,5,6 7,8,9

高级拆包 *rest 或 *_

>>> values = 1, 2, 3, 4, 5 >>> a, b, *rest = values >>> c, d, *_ = values

元组的方法 由于元组内容和长度都是无法改变的,它的方法很少。一个常用的方法是count,用于计算某个值在元组中出现的次数。

>>> a = 1, 2, 3, 2, 4, 2, 5 >>> a.count(2) 3

2.列表list

列表的长度可变,内容也可以修改。 创建:[,] 或 list函数

>>> list = ['a', 'b', 'c'] >>> list[1] = 'B' >>> list ['a', 'B', 'c']

list函数常用于将迭代器转化为列表:

>>> list( range(10) ) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

增加和移除元素:方法append, insert, pop, remove 检查:in, not in 连接和联合:+ 和 extend

+操作生成新对象,需复制原来对象;extend是方法,在一个对象做扩展操作。 排序:方法sort,在原对象上操作。 切片:同元组,[start:stop:step]例如: >>> seq = [1,2,3,4,5] >>> seq[::-1] [5, 4, 3, 2, 1]

3.字典dict

它更常用的名字是哈希表或关联数组,拥有灵活尺寸键值对集合,其中键和值都是Python对象。 创建:{:,} 或 dict函数

>>> d1 = {'a':'apple', 'b':[1,2,3]} >>> d1 {'a': 'apple', 'b': [1, 2, 3]} >>> d1['c'] = (2,) >>> d1[7] = 'banana' >>> d1 {'a': 'apple', 'b': [1, 2, 3], 'c': (2,), 7: 'banana'} >>> 'b' in d1 True >>> d1['c'] = 2 >>> d1 {'a': 'apple', 'b': [1, 2, 3], 'c': 2, 7: 'banana'}

键与值:

>>> d1.keys() dict_keys(['a', 'b', 'c', 7]) >>> d1.values() dict_values(['apple', [1, 2, 3], 2, 'banana']) >>> list(d1.keys()) ['a', 'b', 'c', 7]

有效的字典键类型 尽管字典的值可以是任何Python对象,但键必须是不可变对象,比如标量类型(整数、浮点、字符串)或元组(且元组内对象也必须是不可变对象)。这里就用到一个术语叫作哈希化,通过hash函数可以检查一个对象是否可以哈希化(检查是否可以用做字典的键)。

>>> hash('string') -4418186674076014569 >>> hash((1,2,(3,4))) -2725224101759650258 >>> hash((1,2,[3,4])) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unhashable type: 'list'

4.集合set

集合是一种无序且元素唯一的容器。你可以认为集合像只有键没有值的字典。 创建:{,} 或 set函数

集合的元素就像字典的键,必须是不可变的。如果需要包含列表型元素,必须先转换为元组。

觉得不错点个赞呦:)

最新回复(0)