python3常用数据类型

本文深入讲解Python中的数字、字符串、列表、元组、字典和集合等数据类型,包括类型转换、内置函数和方法,以及数学和随机数函数的使用。

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

python常用数据类型

数字

Number类型不可改变,若改变Number类型的值则将重新分配内存空间

可以通过del语句删除单个或多个对象的引用

Python支持三种不同的数值类型:

整型int:没有限制大小,可以当做Long类型使用
浮点型float:由整数和小数组成,可以表示2.5e2=250
复数complex:由实数和虚数组成且实部和虚部都是浮点型
可以用十六进制和八进制代表整数
0xA0F   十六进制
0o37    八进制

Python数字类型转换

对数据内置的类型进行转换时,只需将数据类型作为函数名

int(x)将x转为整数
float(x)
complex(x[,y])   只有一个参数则虚数为0  否则实数为x虚数为y

可以使用**操作来进行幂运算

5**2=25
注意:变量在使用前必须先定义(即先赋值)
    不同类型的数混合运算时会将整数转换为浮点数

数学函数math:

abs(x):求绝对值
ceil(x):向上取整
exp(x):返回e的x次幂
e^x
floor(x):向下取整
log(x):math.log(math.e)返回1.0   math.log(100,10)返回2.0
max(x,...):返回给定参数的最大值,参数可为序列
min(x,...):返回给定参数的最小值,参数可为序列
pow(x,y):等价于x**y
x^y
round(x[,n]):返回浮点数x的四舍五入值,n表示舍入到小数点后的位数
sqrt(x):返回数字x的平方根

随机数函数random:

choice(seq):从序列的元素中随机挑选一个元素并返回
random():随机生成下一个实数,在范围[0,1)内
shuffle(lst):将序列的所有元素随机排序
seed([x]):改变随机数生成器的种子seed
uniform(x,y):随机生成下一个实数,在范围[x,y]内

三角函数math:

acos(x)
cos(x)
...
degrees(x):弧度转换为角度 如:degrees(math.pi)返回180.0
radians(x):角度转换为弧度

数学常量:

math.pi   圆周率
math.e    自然常数e

字符串

python不支持单字符类型,单字符在其中也是作为一个字符串使用
字符串是不可变序列,可以被索引[index],切片[start,end,step],使用成员资格运算符in

字符串运算符

操作符描述
+字符串连接 ‘a’+‘b’
*重复输出字符串 ‘a’*2
[]索引获取字符串中字符 ‘abc’[0]
[:]切片,遵循左闭右开原则
in成员运算符 若字符串包含指定字符则返回True x in ‘abc’
not in
r/R原始字符串,字面意思打印字符串,无转义 r’abc/n’
%格式字符串

字符串格式化

python支持格式化字符串的输出

print('%s,%d'%('name',18))  /打印name,18
语法:
    字符串%(格式化参数)
格式化符号:
    %s  格式化字符串
    %d  格式化整数
    %f  格式化浮点数
    %c  格式化字符及其ASCII码
格式化操作符辅助指令
    *   定义宽度或者小数点精度
    +   在正数前面显示加号(+)

python3可以使用格式化字符串的函数str.format()

基本语法是{}和:代替以前的%
'{},{}'.format('name',18)  # 顺序
'{a},{b}'.format(a='',b='') # 关键字方式
'{1},{0}'.format('a','b')  # 索引方式 {1}对应'b'

KPI
python使用三引号允许一个字符串跨多行且遵从所见即所得格式的文本字符串

errHTML = '''
<HTML><HEAD><TITLE>
Friends CGI Demo</TITLE></HEAD>
<BODY><H3>ERROR</H3>
<B>%s</B><P>
<FORM><INPUT TYPE=button VALUE=Back
ONCLICK="window.history.back()"></FORM>
</BODY></HTML>
'''
cursor.execute('''
CREATE TABLE users (  
login VARCHAR(8), 
uid INTEGER,
prid INTEGER)
''')

Unicode字符串

在Python2中,普通字符串是以8位ASCII码进行存储的,而Unicode字符串则存储为16位unicode字符串,这样能够表示更多的字符集。使用的语法是在字符串前面加上前缀 u。

在Python3中,所有的字符串都是Unicode字符串。

repr()和str()

repr()和str()可以将任意值转为字符串

函数str()用于将值转化为适于人阅读的形式,而repr()转为供解释器读取的形式
repr()函数得到的字符串通常可以用来重新获得该对象,repr()的输入对python比较友好。通常情况下obj==eval(repr(obj))这个等式是成立的。
而str()函数这没有这个功能
即repr返回对象的string形式,转义字符会被文本输出而str输出的转义字符会被解析

exec和eval

exec:

exec将字符串作为代码执行

from math import sqrt
scope = {}
exec('sqrt = 1',scope)
sqrt(4)
scope['sqrt'] # 值为1

exec():第一个参数执行的代码字符串,第二个参数命名空间(作用域);若第一个参数执行赋值语句,那么赋值创建的变量位于第二个参数提供的字典中

eval:

一个类似于exec的内置函数,exec执行一系列Python语句,而eval计算用字符串表示的Python表达式的值,并返回结果(exec什么都不返回,因为它本身是条语句)

eval(input('Enter an arithmetic expression:')
# 输入6 + 18 * 2
# 返回42
eval也可提供一个命名空间

字符串内建函数

方法描述
capitalize()将字符串的第一个字符转换为大写
center(width,fillchar)返回一个指定的宽度width居中的字符串,fillchar为填充的字符,默认为空格
count(str,beg=0,end=len(string))返回str在string里面出现的次数,若beg和end指定则返回指定范围内str出现的次数
bytes.decode(encoding=‘utf-8’,errors=‘strict’)python3中没有decode方法,但可以使用bytes对象的decode()方法来解码给定的bytes对象,此对象由str.encode()来编码返回
encode(encoding=‘utf-8’,errors=‘strict’)以encoding指定的编码格式编码字符串,若出错默认报一个ValueError的异常,除非errors指定的是’ignore’或者’replace’
endswith(suffix,beg=0,end=len(string))检查字符串是否以suffix结束,若beg和end指定则检查指定的范围内是否以suffix结束,若是返回True否则返回False
startswith(substr,beg=0,end=len(string))检查字符串是否是以指定子字符串 substr 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查
find(str,beg=0,end=len(string))检测str是否包含在字符串中,如果指定范围beg和end,则检查是否包含在指定范围内,如果包含返回开始的索引值,否则返回-1
index(str,beg=0,end=len(string))功能等同于find(),只不过如果str不在字符串中会报一个异常
islower(),isupper,isdigit(),isalpha(),isnumeric判断方法,返回True和False
join(seq)以指定字符串作为分隔符,将seq中所有的元素(字符串表示)合并为一个新的字符串
len(string)返回字符串长度
lower()转换字符串中所有大写字符为小写
upper()转换字符串中的小写字母为大写
swapcase()将字符串中大写转换为小写,小写转换为大写
strip([chars])删除字符串首尾指定的字符,若不指定则删除空格
split(str=’’,num=string.count(str))以str为分隔符截取字符串,若num有指定值则仅截取num+1个字符串
replace(old,new[,max])把 将字符串中的old替换成new,如果 max 指定,则替换不超过 max 次。

列表

序列是python中最基本的数据结构,python有6个序列的内置类型,常见的是列表和元组。

序列都可以进行的操作包括索引,切片,加,乘,检查成员,确定长度,确定最大最小元素

列表的基本操作

长度:  len(list)
组合:  [1]+[2]   =>  [1,2]
重复:  ['g']*2   =>  ['g','g']
成员检查:  a in ['a','b']    =>  True
迭代:  for x in list:

删除:  del  ; del list or del list[index]

列表函数

len(list):  列表元素个数
max/min(list):  返回列表元素最大值/最小值
list(seq):  将序列转换为列表

列表内建函数

添加:
list.append(obj):   在列表末尾添加新的对象
list.insert(index,obj):  根据索引位置添加新的对象
list.extend(seq):  在列表末尾一次性追加另一个序列中的多个值  无返回值
删除:
list.pop([index=-1]):  移除列表中的一个元素(默认索引-1的元素即移除末尾),并返回该元素的值
list.remove(obj):  移除列表中某个值的第一个匹配项
list.clear():  清空列表
其他:
list.copy():  浅复制列表 即列表中的对象会保留其引用  深复制:模块copy中的函数deepcopy
list.sort():  对原列表进行排序
list.reverse():  反向列表中的元素 调用两次可恢复到原来的排列顺序
list.index(obj):  从列表中找出某个值第一个匹配项的索引位置
list.count(obj):  统计某个元素在列表中出现的次数

元组

元组与列表相似,不同之处在于元组的元素不能修改且元组使用()而列表使用[]

元组的创建:
    tup1=('a','b')
    tup2='a','b'  #不需要括号也可以
    tup3=()    #空元祖
    tup4=(52,)    #元组只包含一个元素时需在元素后加逗号,否则括号被当成运算符使用 左例变成int 

元组的基本使用

访问:

    元组通过索引[index]访问,可以进行切片[start:end:step]和组合+,*,元组是序列,不可变类型

修改:

    元组不许修改,但可以进行连接组合
    tup3=tup1+tup2

删除:

    del tup   只能删除整个引用

元组运算符:

    len(tup)
    +
    *
    in
    not in

元组内置函数

len(tup):长度,max(tup):最大元素,min(tup):最小元素,tuple(seq):序列转为元组

字典

格式:

    dic={key:value,...}
    dic={}   #空字典
    键key必须唯一且不可变如字符串,数字,元组
    值value可以取任何数据类型

字典基本操作

访问:

    dic[key]   #没有key则报错

修改:

    dic[key]=value

删除:

    del dic[key]   #删除键key
    del clear()    #清空字典
    del dic        #删除字典 

字典内置函数和方法

len(dict)   长度,元素个数
str(dict)   字符串表示
type(dict)  返回类型

内置函数

获得
dict.get(key,default=None):返回指定键key的值,如果值不在字典中返回default值
dict.items():以列表返回可遍历的(键,值)元组数组
dict.keys():返回一个迭代器,可用list()转换为列表,包含所有键
dict.setdefault(key,default=None):和get()类似,但若键不存在与字典中,将会添加键并将值设为default
dict.values():返回一个迭代器,可使用list()转换为列表,包含所有的value
修改
dict.pop(key[,default]):删除字典给定键key所对应的值,返回值为被删除的值,key值必须给出,否则返回default值
dict.update(dict2):把字典dict2的键值对更新到dict里

key in dict:成员资格运算  返回True,False
dict.clear()    :删除字典内所有元素
dict.copy()     :浅复制

集合

集合set是一个无序的不重复元素序列,可以使用{}or set()函数创建集合;

集合只能包含不可变(可散列)的值,因此不能包含其他集合,frozenset类型表示不可变的集合

注意:创建一个空集合必须用set()
    s={'a','b'}

集合的基本操作

集合运算:

a-b:差集
a|b:并集
a&b:交集
a^b:异或集合

集合支持集合推导式

a={x for x in 'abcdefg' if x not in 'abc'}   /打印{'d','e','f','g'}

添加元素:

s.add(x):元素x添加到集合s中,若s中存在则不进行任何操作
s.update(x):参数x可以是列表,元组,字典等

移除元素:

s.remove(x):将元素从集合s中移除,不存在则报错
s.discard(x):元素不存在不会报错
s.pop():随机删除集合中的一个元素

集合内置函数

x in s :成员资格运算符
s.add()
s.update()
s.clear()
s.remove()
s.pop()
s.copy()
s.discard():删除元素,不存在不报错
s.difference(set):返回多个集合的差集
s.intersection(set):返回集合的交集
s.union(set):返回两个集合的并集
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值