​学习任何一种编程语言时首先要对它的数据类型有所了解,从本篇开始会对 Python 中的常见数据类型的基本概念和操作进行介绍。

Python中有6种标准的数据类型:数字(Number)、字符串(String)、列表(List)、元组(Tuple)、集合(Set)、字典(Dictionary)。

上述6种数据类型可分为两类:

  • 不可变数据类型:数字、字符串、元组。
  • 可变数据类型:列表、集合、字典。

什么是不可变数据类型和可变数据类型,在下面具体的示例中再介绍,会有更清晰的认识。

本文介绍两个最基本的数据类型:数字和字符串。

数字

1 基本概念

Python 的数字类型中包括:整型(int)、浮点型(float)、布尔型(bool)、复数(complex)。其中,布尔型:表示真(True)、假(False)。0和空都表示False,如 ' '、[ ]、{ }、None。非空表示True。

2 常用操作

数值运算:加、减、乘、除、整除、求余(+、-、 *、 /、 //、 %)

10、2、8、16进制表示与转换:

二进制:用0b表示,如0b10表示10进制的2。

八进制:用0o表示,如0o10表示10进制的8。

十六进制:用0x表示,如0x10表示10进制的16。

bin( ):转换为二进制。

int( ):转换为十进制。

hex( ):转换为十六进制。

oct( ):转换为八进制。

内建函数(BIF):

abs():取绝对值

ceil() / floor():向上 / 向下取整

round():四舍五入

min() / max():最小值/最大值

下面给出了数字类型的知识点导图:

最后,我们再看一下,为什么说数字是不可变类型。每种数据类型对应的变量自创建时就会被分配一个内存地址,当该数据类型的对应变量的值发生了改变,那么它对应的内存地址也会发生改变,就称不可变数据类型。

与不可变类型相对的,当数据类型的对应变量的值发生了改变,它对应的内存地址不发生改变,则称为可变数据类型。

例如:给变量 num 赋值,然后改变 num 的值,发现前后两次输出的变量值都为整型,内存地址发生改变。

id():获取对象的内存地址

type():查看对象的类型

num = 2
print(id(num), type(num))
num = 3
print(id(num), type(num))
# 输出
140720244078400 <class 'int'>
140720244078432 <class 'int'>

字符串

1 基本概念

字符串是一个序列,可以使用单引号('')、双引号("")或三引号(''' ''',""" """)创建。此外,三引号可定义多行字符串。

字符串中可包含转义字符,如换行(n )、单引号(' )。

非转义的原始字符串:字符串前加r,例如:print(r'hellonworld'),换行符 n 也会被输出,而不会产生换行。

unicode 字符串:在字符串前加u,对字符串进行 unicode 编码。在 Python3 中,字符串默认是 unicode 编码,中文字符串前无需加u,而对于 Python2,默认编码是ascii,在中文前需要加u。

2 常用操作

常用操作主要有以下几点:

  • 字符串拼接/合并
  • 字符串复制
  • 字符串索引/切片
  • 字符串的替换
  • 字符串的匹配查找
  • 去除字符串两侧指定字符
  • 字符串按指定字符分隔
  • 计算字符串的长度
  • 统计指定字符串出现的次数
  • 判断是否包含指定字符串
  • 字符串转换大小写
  • 格式化字符串

下面通过具体示例依次介绍各种操作。

字符串拼接/合并

使用 “+”合并字符串

s = "hello" + " " + "world!"
print(s)
# 输出
hello world!

使用 join() 方法:str.join(seq), str为连接符,seq为字符串 或 字符串为元素构成的序列。

s1 = 'python'
s2 = ['I', 'love', 'python']
print('_'.join(s1))
print('_'.join(s2))
# 输出
p_y_t_h_o_n
I_love_python

字符串复制

s = 'python'
print(s*3)
# 输出
pythonpythonpython

字符串索引/切片

通过下标索引,默认从0开始。

s = 'python'
result = s[1]
print(result)
# 输出
y

切片 [start:stop:step] start:开始索引,stop:结束索引,step: 步长,默认值为1。

s = 'python'
r1 = s[1:] # 从开始索引截取到字符串的最后
r2 = s[:3] # 从开头截取到结束索引之前
r3 = s[1:3] # 从开始索引截取到结束索引之前
r4 = s[:] # 截取所有字符串
r5 = s[::-1] # 字符串反转
print('r1=%s, r2=%s, r3=%s, r4=%s, r5=%s'% (r1, r2, r3, r4, r5)) # 格式化输出
# 输出
r1=ython, r2=pyt, r3=yt, r4=python, r5=nohtyp

字符串的替换

"""
功能:将字符串str中的子字符串old用新子字符串new替换。
语法:str.replace(old, new[, max])
参数:str为原始字符串,old为将被替换的子字符串,new为新字符串,max表示最多替换的次数,可选。
返回:返回替换后的新字符串。
"""
s1 = 'I love python!'
r1 = s1.replace('python', 'java')
s2 = 'abcabcabcabc'
r2 = s2.replace('ab', 'AB', 3)
print(r1)
print(r2)
# 输出
I love java!
ABcABcABcabc

字符串的匹配查找

"""
功能:检测字符串中是否包含子字符串
语法:str.find(substr, beg=0, end=len(string))
参数:substr为待查找的字符串,beg为开始索引,默认为0,end为结束索引,默认为字符串的长度。
返回:如果包含则返回子字符串开始的索引值,否则返回-1。
"""
s = 'Always on the road.'
r1 = s.find('road', 7, len(s))
r2 = s.find('Road')
print(r1, r2)
# 输出
14 -1

与 find() 类似,index() 也可以检测字符串中是否包含子字符串。不同的是,当查询不到待匹配的字符串时,会抛出异常。

"""
功能:检测字符串中是否包含子字符串
语法:str.index(substr, beg=0, end=len(string))
参数:substr为待查找的字符串,beg为开始索引,默认为0,end为结束索引,默认为字符串的长度。
返回:如果包含子字符串返回开始的索引值,否则抛出异常。
"""
s = 'Always on the road.'
r1 = s.index('road', 7, len(s))
print(r1)
r2 = s.index('Road')
# 输出
14
ValueError: substring not found

去除字符串两侧指定字符

"""
功能:用于移除字符串头尾指定的字符
语法:str.strip([char])
参数:chars为待移除的字符序列
返回:移除字符串头尾指定的字符生成的新字符串。
"""
s1 = ' Always on the road.tn'
r1 = s1.strip()
print(r1)
s2 = 'abcdcdab'
r2 = s2.strip('ab')
print(r2)
# 输出
'Always on the road.'
'cdcd'

与 strip() 类似的还有 lstrip()、rstrip() 两个函数,lstrip() 用于去掉左侧的指定字符,rstrip() 用于去掉右侧的指定字符。

字符串按指定字符分隔

"""
功能:通过指定分隔符对字符串进行切片。
语法:str.split(substr="", num=str.count(substr))
参数:substr为分隔符,默认为所有的空字符,包括空格、换行(n)、制表符(t)等,num为分隔次数,默认为-1,即分隔所有。
返回:返回分割后的字符串列表。
"""
s1 = ' Always on the road.tn'
r1 = s1.split()
print(r1)
s2='abcdabcdabcd'
r2 = s2.split('c', 2)
print(r2)
# 输出
['Always', 'on', 'the', 'road.']
['ab', 'dab', 'dabcd']

计算字符串的长度

s = 'Always on the road.'
r = len(s)
print(r)
# 输出
19

统计指定字符串出现的次数

"""
功能:用于统计字符串里某个字符出现的次数。
语法:str.count(substr, start=0,end=len(str))
参数:substr为待匹配的子字符串,start和end分别为字符串开始、结束搜索的位置。
返回:返回子字符串在字符串中出现的次数。
"""
s = 'Always on the road.'
r = s.count('a')
print(r)
# 输出
2

判断是否包含指定字符串

s = 'Always on the road.'
print('road' in s)
print('road' not in s)
# 输出
True
False

字符串转换大小写

将每个单词首字母变为大写: title()

s = 'I love python!'
r = s.title()
print(r)
# 输出
I Love Python!

字符串字母全部转为小写/大写: lower()/upper()

s = 'I love python!'
r1 = s.lower()
r2 = s.upper()
print(r1)
print(r2)
# 输出
i love python!
I LOVE PYTHON!

字符串首字母大写: capitalize()

s = 'i love python!'
r = s.capitalize()
print(r)
# 输出
I love python!

大小写互换: swapcase()

s = 'abcABC'
r = s.swapcase()
print(r)
# 输出
ABCabc

格式化字符串

%-格式化

"""
格式化符号:
%s:格式化字符串
%d:格式化整数
%f:格式化浮点数,可指定小数点后的精度
"""
s = ("lin", '1001')
print("姓名:%s, 工号:%s"%s)
# 输出
姓名:lin, 工号:1001

str.format()-格式化

# 按默认位置填充
print("{} {}".format("hello", "world") )
# 输出
hello world
# 按位置索引填充
print("{1} {0}".format("world", "hello"))
# 输出
hello world
# 通过参数填充
print("姓名:{name}, 学号:{ID}".format(name="张三", ID="1002"))
# 输出
姓名:张三, 学号:1002
# 通过字典设置参数
data = {"name": "张三", "ID": "1002"}
print("姓名:{name}, 学号:{ID}".format(**data))
# 输出
姓名:张三, 学号:1002

f-string 格式化

"""
是Python3.6新引入的一种字符串格式化方法
在形式上是以 f 或 F 修饰符引领的字符串(f'xxx' 或 F'xxx'),以大括号 {} 标明被替换的字段。
在本质上并不是字符串常量,而是一个在运行时运算求值的表达式。
"""
# 解析变量
name = "张三"
ID = "1002"
print(f"姓名: {name}, 学号: {ID}")
# 输出
姓名: 张三, 学号: 1002
# 解析字典
data = {"name": "张三", "ID": "1002"}
print(f"姓名: {data['name']}, 学号: {data['ID']}")
# 输出
姓名: 张三, 学号: 1002
# 表达式
s1 = 'hello'
s2 = 'world'
print(f'{s1+s2}')
# 输出
helloworld

最后,附上字符串相关知识的思维导图:

—END—

字符串类型的数字比较大小_Python核心知识系列:数字与字符串类型相关推荐

  1. python 判断字符串是否为数字_Python核心知识系列:数字与字符串类型

    ​学习任何一种编程语言时首先要对它的数据类型有所了解,从本篇开始会对 Python 中的常见数据类型的基本概念和操作进行介绍. Python中有6种标准的数据类型:数字(Number).字符串(Str ...

  2. 正则 指定开头结尾_Python核心知识系列:正则表达式与JSON

    1 正则表达式必知必会 1.1 简介 正则表达式:是一些用来匹配和处理文本的字符串. 正则表达式的使用场景主要以下两种情况:一是查找特定的信息(搜索),二是查找并编辑特定的信息(替换). 用模式(pa ...

  3. c++中判断某个值在字典的value中_Python核心知识系列:字典

    1 定义 字典是一种映射对象类型,由键值对构成的一个可变容器.字典中的每个键值对内用冒号 ( : ) 分隔,键值对间用逗号 ( , ) 分隔,所有键值对包括在{}中.字典的键必须是唯一的,只有可散列的 ...

  4. python语言中内置的字符串排版方法_python基础知识(python内置数据类型-字符串)...

    python中的字符串 字符串基本特点 字符串的本质是字符序列.python中的字符串是不可变的,无法对原字符串做任何修改(不能用下标赋值的方式去改变字符串).但是可以将字符串的一部分赋值创建新的字符 ...

  5. python输入数字比大小_Python练习实例47 | 比较任意两个数字的大小

    比较任意两个数字的大小,这个问题相对来说很简单,很多人在学习if条件语句的时候,都会拿这个问题来练手. 我们今天不来特别难的内容,也来拿这个问题练练手吧! 小黄人.jpg 下面请看代码: # 两个数字 ...

  6. python装饰器深度讲解_python核心知识讲解,干货!!!

    大家好,为大家带来python中核心知识的讲解,不讲最基础的语法,这个大家都能轻松学会,不耽误时间,只有干货. ###查看当前作用域内的所有变量 >>>help('__main__' ...

  7. 大学python教材思维导图_Python核心知识体系的14张思维导图

    本文主要涵盖了 Python 编程的核心知识(暂不包括标准库及第三方库). 按顺序依次展示了以下内容的一系列思维导图:基础知识,数据类型(数字,字符串,列表,元组,字典,集合),条件&循环,文 ...

  8. java字符串常量池长度_Java String类相关知识梳理(含字符串常量池(String Pool)知识)...

    目录 1. String类是什么 1.1 定义 1.2 类结构 1.3 所在的包 2. String类的底层数据结构 3. 关于 intern() 方法(重点) 3.1 作用 3.2 字符串常量池(S ...

  9. python字符串数字比较大小_Python 2如何比较string和int?为什么列表比数字大,元组比列表大?...

    小编典典 从python 2手册: CPython实现细节:除数字外,其他类型的对象按其类型名称排序:不支持正确比较的相同类型的对象按其地址排序. 当你对两个字符串或两个数字类型进行排序时,将以预期的 ...

最新文章

  1. C linux 宏定义的使用
  2. 搭建WordPress个人网站
  3. 进程切换(上下文切换)
  4. hive 临时表 with_Kettle(PDI)转换中输入表输入详解
  5. qt如何做到实时显示数据_Python 如何实时绘制数据
  6. vForum 2011 Beijing现场图文播报三 动手实验营
  7. Silverlight 4版本升级到4.0.60531.0
  8. Commons Configuration2 - Quick start guide
  9. Java集合查找Map,Java集合框架中Map接口的使用
  10. php 音频上传大小限制,WordPress最大上传文件大小限制修改 | Stay Curious
  11. Redash本地开发环境搭建
  12. 大二实习使用的技术汇总(中)
  13. visio中公式太小_冲压模具设计:冲床吨位计算公式、实例分析,设计师值得一看...
  14. 小马激活软件下载,当心伪小马,有病毒
  15. VB/VBA的浮点数结构
  16. 流媒体:RTMP 协议完全解析
  17. C语言实现:素数的判断的多种方法
  18. 3GPP TS 29244-g30 中英文对照 | 6.2.6 PFCP Association Setup Procedure
  19. 计算机类毕业设计评语导师评语,本科生毕业设计导师评语参考
  20. 双注入法/开路短路法

热门文章

  1. What happens when clicking interaction recor工作中心
  2. 手机app上的consent管理
  3. 瑞幸咖啡官网的视频播放原理讲解
  4. PyFoam来实时输出残差
  5. c语言 编程 牛顿迭代,C语言编写牛顿迭代法的跟踪
  6. 18岁初中毕业学Java_刚满十八 初中毕业 java自学完了 没学历 该怎么办?
  7. mysql监控sql_关于对mysql语句进行监控的方法详解
  8. console 一行_你还在用 console.log 调试?
  9. python登录网站 爬虫_Python爬虫如何使用Cookies登录网站
  10. kylin 部分问题