Python数据类型总结

本文详细介绍了Python中的数据类型,包括标量类型如数值、字符串、布尔、None和字节,以及结构类型如元组、列表、字典和集合。特别讨论了字符串的不可变性、类型转换以及日期和时间的处理。同时,对元组、列表、字典和集合的特性、创建及操作方法进行了阐述。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概述

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

一、标量类型

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

标准库中含有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隐式转换类型
boolintint
bool,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函数

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

觉得不错点个赞呦:)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值