全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 python论坛
107 0
2025-12-03
在程序中,数据的存储形式多种多样,不同类型的数据需要使用不同的方式来表示。例如,姓名通常采用字符串的形式保存,而年龄则适合用数值类型存储。Python 提供了六种基础数据类型,用于满足不同场景下的数据处理需求,主要包括:数字(Numbers)、字符串(String)、列表(List)、元组(Tuple)、字典(Dictionary)等。 本文将重点讲解其中的数字类型与字符串类型。

数字类型(Number)

在 Python 中,数字类型用于表示数值数据,属于不可变对象,即一旦创建就不能修改其值。Python 支持三种主要的数字类型: 1. 整型(int):不包含小数部分,支持任意精度的整数运算。由于其长度不受限制,在 Python 3 中已经不再区分 int 和 long 类型。 2. 浮点型(float):用于表示带有小数点的数值,由整数部分和小数部分共同构成。 3. 复数型(complex):由实部和虚部组成,形式为 a + bj,也可通过 complex(a, b) 构造。其中实部和虚部均为浮点类型。该类型在常规开发中较少使用,多见于科学计算或工程建模领域。 如何定义一个数字类型的变量?具体语法如下所示:
# 整形和浮点型
a = 10
b = 10.2

# 复数
c = complex(1, 2)
数字类型之间可以相互转换,但需要注意的是,这种转换仅适用于本身可解析为数字的数据,无法将字符串、列表等非数值类型直接转为数字类型。
'''
int(x) 将x转换为一个整数。
float(x) 将x转换到一个浮点数。
complex(x) 将x转换到一个复数,实数部分为 x,虚数部分为 0。
complex(x, y) 将 x 和 y 转换到一个复数,实数部分为 x,虚数部分为 y。x 和 y 是数字表达式。
'''
a = 1.0
b = int(a)  # 将a转成整形
此外,int 与 float 类型之间可以通过数学运算符进行混合运算,结果通常会自动转换为更精确的浮点类型。
print(2 + 2)
print(10 / 3)  # 总是返回一个浮点数,不同的计算机上得到的结果可能不同,是由于精度问题

字符串类型(str)

字符串是 Python 中最常用的数据结构之一,可通过成对的单引号或双引号来定义。它同样属于不可变类型,意味着字符串一旦被创建,其内容不能被更改。
name = 'python'
gender = "male"
几乎所有的数据类型都可以转换为字符串形式,这使得字符串在数据输出和调试过程中具有很高的实用性。
res=str({'a':1})
print(res,type(res))
字符串提供了丰富的操作方法,以下是几种常见且实用的操作方式: 一、通过索引获取字符
每个字符在字符串中都有对应的索引位置。正向索引从 0 开始递增,反向索引则从 -1 开始倒序计数。 若需提取某个特定位置的字符,可通过索引方式进行访问,支持正向和反向取值。
my_str = 'python'
# 正向取值
str1 = my_str[0]  # P
str2 = my_str[5]  # n
# 反向取值
str3 = my_str[-1]  # n
str4 = my_str[-6]  # P
二、切片操作——提取子字符串
利用方括号配合起始与结束索引来截取字符串的一部分,实现子串的提取。
'''
变量[起始索引:结束索引:步长]
注意:[]取值顾头不顾尾,取出的子字符串不包括结束索引对应的值,可以通过控制步长操作输出的子字符串
'''
my_str = 'python'
# 正向切片
str1 = my_str[0: 5]  # pytho
str2 = my_str[0: 5]  # 等价于my_str[0: 5: 1] ,步长是1
str3 = my_str[0: 5: 2]  # 步长等于2,相当于从第一个字符开始每隔一个取一个值,所以结果是 pto
str4 = my_str[5: 0: -1]  # 步长可以为负数,表示从倒序取子字符串,结果是 nohty
str5 = my_str[:]   # 表示取字符串中的所有字符, python
str6 = my_str[::]  # 表示取字符串中的所有字符, python
str7 = my_str[::-1]  # 表示将字符串反转,nohtyp

# 反向切片
str6 = my_str[-1: -3: -1]  # no
三、获取字符串长度 —— len() 函数
使用内置函数 len() 可以快速查看字符串所包含的字符总数。
my_str = 'python'
print(len(my_str))  # 6
四、成员检测 —— in 与 not in 运算符
可用于判断某段字符是否存在于目标字符串中,返回布尔值结果。
# in 判断hello 是否在 str1里面
>>> 'hello' in str1  
True
# not in:判断tony 是否不在 str1里面
>>> 'tony' not in str1 
True
五、遍历字符串 —— for 循环
通过 for 循环可以逐个访问字符串中的每一个字符,便于执行批量处理逻辑。
my_str = 'python'
# 字符串是可迭代对象,依次取出字符串中的每个字符
for i in my_str:
    print(i)
六、字符串之间的运算
字符串支持拼接等基本运算操作,但不允许与非字符串类型(如数字、列表)直接进行运算。
a = hello
b = world
# + 字符串拼接操作
print(a + b)  # helloworld

# * 重复输出字符串
print(a * 2)  # hellohello
七、常用内置方法介绍
Python 为字符串提供了大量内置方法(可通过“字符串.方法名”调用),虽然很多方法并不频繁使用,但以下这些较为常用: - 去除两侧指定字符 用于清除字符串开头和结尾的特定字符或空白符。
str1 = '**tony***'
# 括号内不指定字符,默认移除空白字符,比如空格 制表符tab
str1.strip('*')  # 移除左右两边的指定字符
str1.lstrip('*')  # 只移除左边的指定字符
str1.rstrip('*')  # 只移除右边的指定字符
split() rsplit()
- 按分隔符拆分字符串 使用指定字符对字符串进行分割,返回结果为列表类型。
#  括号内不指定字符,默认以空格作为切分符号
str3 = 'hello world'
b = str3.split()
print(b)  # ['hello', 'world']

# split会按照从左到右的顺序对字符串进行切分,可以指定切割次数
str5='C:/a/b/c/d.txt'
print(str5.split('/',1))   # ['C:', 'a/b/c/d.txt']

# rsplit刚好与split相反,从右往左切割,可以指定切割次数
str5='a|b|c'
print(str5.rsplit('|',1))  # ['a|b', 'c']
lower() upper()
- 大小写转换 将字符串整体转换为全大写或全小写格式。
>>> str2 = 'My nAme is tonY!'>>> str2.lower()  # 将英文字符串全部变小写my name is tony!>>> str2.upper()  # 将英文字符串全部变大写MY NAME IS TONY!
startswith() endswith()
- 判断前缀与后缀 检查字符串是否以某个子串开头或结尾,返回 True 或 False。
>>> str3 = 'tony jam'# startswith()判断字符串是否以括号内指定的字符开头,结果为布尔值True或False>>> str3.startswith('t') True>>> str3.startswith('j')False# endswith()判断字符串是否以括号内指定的字符结尾,结果为布尔值True或False>>> str3.endswith('jam')True>>> str3.endswith('tony')  False
join()
- 连接可迭代对象中的元素 从列表、元组等结构中取出多个字符串元素,并以指定连接符合并成一个新的字符串。
>>> '%'.join('hello') # 从字符串'hello'中取出多个字符,然后按照%作为连接符进行拼接'h%e%l%l%o'>>> '|'.join(['tony','18','read'])  # 从列表中取出多个字符,然后按照|作为连接符进行拼接'tony|18|read'
replace()方法
- 替换字符串中的内容 使用新字符串替换原字符串中的旧内容,还可设定替换次数。
>>> str7 = 'my name is tony, my age is 18!'  # 将tony的年龄由18岁改成73岁>>> str7 = str7.replace('18', '73')  # 语法:replace('旧内容', '新内容')>>> str7my name is tony, my age is 73!# 可以指定修改的个数>>> str7 = 'my name is tony, my age is 18!'>>> str7 = str7.replace('my', 'MY',1) # 只把一个my改为MY>>> str7'MY name is tony, my age is 18!'
isdigit()
- 判断是否全由数字组成 检测字符串中的所有字符是否均为数字,返回布尔类型结果。
>>> str8 = '5201314'>>> str8.isdigit()True>>> str8 = '123g123'>>> str8.isdigit()False
center() ljust() rjust() zfill()
>>> name='tony'>>> name.center(30,'-')  # 总宽度为30,字符串居中显示,不够用-填充-------------tony------------->>> name.ljust(30,'*')  # 总宽度为30,字符串左对齐显示,不够用*填充tony**************************>>> name.rjust(30,'*')  # 总宽度为30,字符串右对齐显示,不够用*填充**************************tony>>> name.zfill(50)  # 总宽度为50,字符串右对齐显示,不够用0填充0000000000000000000000000000000000000000000000tony
captalize(),swapcase(),title()
# captalize:首字母大写>>> message = 'hello everyone nice to meet you!'>>> message.capitalize()Hello everyone nice to meet you!  # swapcase:大小写翻转>>> message1 = 'Hi girl, I want make friends with you!'>>> message1.swapcase()  hI GIRL, i WANT MAKE FRIENDS WITH YOU!  # title:每个单词的首字母大写>>> msg = 'dear my friend i miss you very much'>>> msg.title()Dear My Friend I Miss You Very Much
关于字符串格式化输出的相关内容,请参考之前发布的文章《与用户交互》。
# 整形和浮点型
a = 10
b = 10.2

# 复数
c = complex(1, 2)
'''
int(x) 将x转换为一个整数。
float(x) 将x转换到一个浮点数。
complex(x) 将x转换到一个复数,实数部分为 x,虚数部分为 0。
complex(x, y) 将 x 和 y 转换到一个复数,实数部分为 x,虚数部分为 y。x 和 y 是数字表达式。
'''
a = 1.0
b = int(a)  # 将a转成整形
print(2 + 2)
print(10 / 3)  # 总是返回一个浮点数,不同的计算机上得到的结果可能不同,是由于精度问题
name = 'python'
gender = "male"
res=str({'a':1})
print(res,type(res))
my_str = 'python'
# 正向取值
str1 = my_str[0]  # P
str2 = my_str[5]  # n
# 反向取值
str3 = my_str[-1]  # n
str4 = my_str[-6]  # P
'''
变量[起始索引:结束索引:步长]
注意:[]取值顾头不顾尾,取出的子字符串不包括结束索引对应的值,可以通过控制步长操作输出的子字符串
'''
my_str = 'python'
# 正向切片
str1 = my_str[0: 5]  # pytho
str2 = my_str[0: 5]  # 等价于my_str[0: 5: 1] ,步长是1
str3 = my_str[0: 5: 2]  # 步长等于2,相当于从第一个字符开始每隔一个取一个值,所以结果是 pto
str4 = my_str[5: 0: -1]  # 步长可以为负数,表示从倒序取子字符串,结果是 nohty
str5 = my_str[:]   # 表示取字符串中的所有字符, python
str6 = my_str[::]  # 表示取字符串中的所有字符, python
str7 = my_str[::-1]  # 表示将字符串反转,nohtyp

# 反向切片
str6 = my_str[-1: -3: -1]  # no
my_str = 'python'
print(len(my_str))  # 6
# in 判断hello 是否在 str1里面
>>> 'hello' in str1  
True
# not in:判断tony 是否不在 str1里面
>>> 'tony' not in str1 
True
my_str = 'python'
# 字符串是可迭代对象,依次取出字符串中的每个字符
for i in my_str:
    print(i)
a = hello
b = world
# + 字符串拼接操作
print(a + b)  # helloworld

# * 重复输出字符串
print(a * 2)  # hellohello
strip() lstrip() rstrip()
str1 = '**tony***'
# 括号内不指定字符,默认移除空白字符,比如空格 制表符tab
str1.strip('*')  # 移除左右两边的指定字符
str1.lstrip('*')  # 只移除左边的指定字符
str1.rstrip('*')  # 只移除右边的指定字符
split() rsplit()
#  括号内不指定字符,默认以空格作为切分符号
str3 = 'hello world'
b = str3.split()
print(b)  # ['hello', 'world']

# split会按照从左到右的顺序对字符串进行切分,可以指定切割次数
str5='C:/a/b/c/d.txt'
print(str5.split('/',1))   # ['C:', 'a/b/c/d.txt']

# rsplit刚好与split相反,从右往左切割,可以指定切割次数
str5='a|b|c'
print(str5.rsplit('|',1))  # ['a|b', 'c']
lower() upper()
>>> str2 = 'My nAme is tonY!'>>> str2.lower()  # 将英文字符串全部变小写my name is tony!>>> str2.upper()  # 将英文字符串全部变大写MY NAME IS TONY!
startswith() endswith()
>>> str3 = 'tony jam'# startswith()判断字符串是否以括号内指定的字符开头,结果为布尔值True或False>>> str3.startswith('t') True>>> str3.startswith('j')False# endswith()判断字符串是否以括号内指定的字符结尾,结果为布尔值True或False>>> str3.endswith('jam')True>>> str3.endswith('tony')  False
join()
>>> '%'.join('hello') # 从字符串'hello'中取出多个字符,然后按照%作为连接符进行拼接'h%e%l%l%o'>>> '|'.join(['tony','18','read'])  # 从列表中取出多个字符,然后按照|作为连接符进行拼接'tony|18|read'
replace()方法
>>> str7 = 'my name is tony, my age is 18!'  # 将tony的年龄由18岁改成73岁>>> str7 = str7.replace('18', '73')  # 语法:replace('旧内容', '新内容')>>> str7my name is tony, my age is 73!# 可以指定修改的个数>>> str7 = 'my name is tony, my age is 18!'>>> str7 = str7.replace('my', 'MY',1) # 只把一个my改为MY>>> str7'MY name is tony, my age is 18!'
isdigit()
>>> str8 = '5201314'>>> str8.isdigit()True>>> str8 = '123g123'>>> str8.isdigit()False
center() ljust() rjust() zfill()
>>> name='tony'>>> name.center(30,'-')  # 总宽度为30,字符串居中显示,不够用-填充-------------tony------------->>> name.ljust(30,'*')  # 总宽度为30,字符串左对齐显示,不够用*填充tony**************************>>> name.rjust(30,'*')  # 总宽度为30,字符串右对齐显示,不够用*填充**************************tony>>> name.zfill(50)  # 总宽度为50,字符串右对齐显示,不够用0填充0000000000000000000000000000000000000000000000tony
captalize(),swapcase(),title()
# captalize:首字母大写>>> message = 'hello everyone nice to meet you!'>>> message.capitalize()Hello everyone nice to meet you!  # swapcase:大小写翻转>>> message1 = 'Hi girl, I want make friends with you!'>>> message1.swapcase()  hI GIRL, i WANT MAKE FRIENDS WITH YOU!  # title:每个单词的首字母大写>>> msg = 'dear my friend i miss you very much'>>> msg.title()Dear My Friend I Miss You Very Much
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群