一、字符串
1.1 怎么定义字符串
字符串是Python最常用的数据结构之一。在 Python 里是用于处理文本数据的,比如存储姓名、文章内容等文本信息 。
- 定义方式:
- 单引号:用单引号
' '
包裹文本,如name = 'Alice'
,单引号内可正常包含除单引号之外的字符,若要包含单引号,需进行转义,像sentence = 'He said, \'Hello!\''
。 - 双引号:用双引号
" "
包裹文本,例如message = "Hello, world!"
,在需要包含单引号时较为方便,如quote = "He said, 'Hello!'"
。 - 三重单引号:分为三重单引号
''' '''
和三重双引号""" """
。常用于定义多行字符串。
- 单引号:用单引号
使用的时候两种方式:
- 一种双引号里有双引号,那么里面的双引号就用\进行转译。
- 另一种直接最外面使用单引号,里面也可以直接使用双引号。见下图。
1.2 如何使用字符串中的变量
- 使用场景:当我们需要在字符串中插入变量的值时,可采用 f - strings 这种方式。比如有变量存储姓名、年龄等信息,想把这些信息整合到一个描述性字符串中,就会用到。
- 语法格式:f - strings 以
f
开头,后面跟着用大括号{}
包裹的变量名,即f"{变量名}"
。示例如下: -
name = "Alice" age = 25 message = f"My name is {name} and I'm {age} years old." print(message) # 输出:My name is Alice and I'm 25 years old.
1.3 字符串的基本操作
in
:表达式 x in s
,其中 x
是要查找的元素,s
是目标字符串。如果 x
是 s
的子字符串或字符,返回 True
,否则返回 False
。例如:
s = "hello world"
print('ll' in s) # 输出 True
print('abc' in s) # 输出 False
not in
:表达式 x not in s
,功能与 in
相反,当 x
不是 s
的子字符串或字符时,返回 True
,否则返回 False
。例如:
s = "hello world"
print('abc' not in s) # 输出 True
print('ll' not in s) # 输出 False
+
运算符:用于连接两个字符串。将 s
和 t
两个字符串首尾相连,生成一个新的字符串。例如:
s = "Hello"
t = "World"
result = s + t
print(result) # 输出 HelloWorld
*
运算符:用于字符串重复。s * t
表示将字符串 s
重复 t
次,t
必须是整数。例如:
s = "Hi"
t = 3
result = s * t
print(result) # 输出 HiHiHi
s[i]
:用于获取字符串 s
中索引为 i
的单个字符。在 Python 中,字符串索引从 0
开始。例如:
s = "hello"
print(s[1:3]) # 输出 'el'
# 如果索引为负数,则从字符串末尾开始计数,-1 表示最后一个字符 ,如 print(s[-1]) 会输出 'o' 。
s[i:j]
:获取字符串 s
的子串,范围是从索引 i
(包含)到索引 j
(不包含)。例如:
s = "hello"
print(s[1:3]) # 输出 'el'
# 如果 i 省略,默认从字符串开头(索引 0 )开始;如果 j 省略,默认到字符串末尾 。比如 s[:3] 等价于 s[0:3] ,s[1:] 等价于 s[1:len(s)] 。
s[i:j:k]
:在 s[i:j]
的基础上,增加了步长 k
,表示每隔 k - 1
个字符取一个字符。例如:
s = "hello"
print(s[::2]) # 输出 'hlo' ,从开头到结尾,每隔1个字符取一个
# k 为负数时,表示反向切片。比如 s[::-1] 可以将字符串 s 反转 ,对于 s = "hello" ,s[::-1] 输出为 'olleh' 。
1.4 字符串的常用方法
4.1 str.count(sub[, start[, end]])
- 功能:统计子字符串
sub
在指定字符串str
中,位于start
(起始索引,包含)到end
(结束索引,不包含)范围内非重叠出现的次数 。start
和end
为可选参数,若省略,默认在整个字符串中统计。 - 示例:
s = "hello world hello"
print(s.count('hello')) # 输出 2
print(s.count('l', 0, 5)) # 在索引0到4范围内统计'l'出现次数,输出 2
4.2 str.isalnum()
- 功能:判断字符串
str
中的所有字符是否都是字母或数字,且字符串至少有一个字符。满足条件返回True
,否则返回False
。 - 示例:
s1 = "abc123"
s2 = "abc!123"
s3 = ""
print(s1.isalnum()) # 输出 True
print(s2.isalnum()) # 输出 False ,因包含'!'非字母数字字符
print(s3.isalnum()) # 输出 False ,字符串为空
4.3 str.isalpha()
- 功能:判断字符串
str
中的所有字符是否都是字母,且字符串至少有一个字符。满足条件返回True
,否则返回False
。 - 示例:
s1 = "abc"
s2 = "abc123"
s3 = ""
print(s1.isalpha()) # 输出 True
print(s2.isalpha()) # 输出 False ,因包含数字
print(s3.isalpha()) # 输出 False ,字符串为空
4.4 str.join(iterable)
- 功能:以
str
作为分隔符,将可迭代对象iterable
(如列表、元组等,其中元素需为字符串)中的字符串拼接起来,返回拼接后的新字符串。 - 示例:
s = "-"
lst = ["apple", "banana", "cherry"]
result = s.join(lst)
print(result) # 输出 apple-banana-cherry
4.5 str.split(sep=None, maxsplit=-1)
- 功能:根据分隔符
sep
对字符串str
进行分割。若sep
为None
,则按空白字符(空格、换行符等)分割;maxsplit
限制最多分割次数,-1
表示无限制。返回分割后的字符串列表。 - 示例:
s = "hello world python"
print(s.split()) # 输出 ['hello', 'world', 'python']
print(s.split('l', 1)) # 按'l'分割,最多分割1次,输出 ['he', 'lo world python']
4.6 str.startswith(prefix[, start[, end]])
- 功能:检查字符串
str
从索引start
(包含)到索引end
(不包含)的部分是否以指定的prefix
开头,满足则返回True
,否则返回False
。start
和end
为可选参数,省略时检查整个字符串。 - 示例:
s = "hello world"
print(s.startswith('he')) # 输出 True
print(s.startswith('wo', 6)) # 从索引6开始检查是否以'wo'开头,输出 True
二、数字类型
2.1 数字类型介绍
用途:Python 的数字类型在数学计算(如加减乘除、幂运算等)和统计(如求均值、方差等)场景中广泛应用 。
种类:
-
- 整数:表示没有小数部分的数,像
1
、-5
等。Python 中的整数没有大小限制,可表示非常大或非常小的整数。 - 浮点数:用于表示带有小数部分的数,如
3.14
、-2.5
。在计算机中,浮点数采用二进制表示,可能存在精度问题,例如0.1 + 0.2
并不精确等于0.3
。 - 复数:形式为
a + bj
,其中a
是实部,b
是虚部 ,j
表示虚数单位(在 Python 中用j
表示),例如3 + 4j
。复数常用于科学计算、信号处理等领域。
- 整数:表示没有小数部分的数,像
创建方式:可以通过直接写数字字面值(如 5
、3.14
)创建数字,也能通过内置函数(如 int()
、float()
等)和运算符(如 +
、*
等)的运算结果来创建 。比如 a = int('5')
,b = 2 + 3
。
2.2 数字类型函数介绍
关于 Python 中数字类型常见运算如下:
算术运算:
- 加法(
x + y
):计算x
和y
两个数字的总和。例如3 + 5
结果为8
,可以用于整数、浮点数运算,也支持不同数字类型混合运算,如3 + 2.5
结果为5.5
。 - 减法(
x - y
):求x
与y
的差值。比如7 - 4
结果是3
。 - 乘法(
x * y
):计算x
和y
的乘积。像4 * 6
等于24
。 - 除法(
x / y
):返回x
除以y
的商,结果是浮点数。例如9 / 2
结果为4.5
。 - 整除(
x // y
):得到x
除以y
的商的整数部分,舍去小数部分。如9 // 2
结果是4
。 - 取余(
x % y
):求出x
除以y
的余数。例如9 % 2
结果为1
。
符号运算:
- 取反(
-x
):改变数字x
的符号,正数变为负数,负数变为正数 。比如x = 5
,-x
就是-5
;x = -3
,-x
则是3
。 - 保持不变(
+x
):对数字x
不做任何改变,x
是多少,+x
就是多少 。例如x = 7
,+x
依然是7
。
数值处理运算:
abs(x)
:返回数字x
的绝对值,若x
是整数或浮点数,就是其到原点的距离;若x
是复数,则返回复数的模。例如abs(-5)
结果为5
,abs(3 + 4j)
结果为5.0
。int(x)
:将x
转换为整数。若x
是浮点数,会向下取整,如int(3.8)
结果是3
;若x
是字符串,只要字符串内容是合法整数形式(如'5'
),就能转换为对应整数。float(x)
:把x
转换为浮点数。若x
是整数,会在末尾添加.0
,如float(5)
结果是5.0
;若x
是字符串,只要字符串内容是合法数字形式(如'3.14'
),就能转换为浮点数。complex(re, im)
:创建一个复数,实部为re
,虚部为im
,im
默认为0
。比如complex(3)
得到3+0j
,complex(3, 4)
得到3 + 4j
。c.conjugate()
:对于复数c
,返回其共轭复数,即实部不变,虚部取反。例如复数c = 3 + 4j
,c.conjugate()
结果是3 - 4j
。
2.3 数字类型转换
Python 是 强类型编程语言,意味着变量的类型一旦确定,就不会自动进行类型转换(除非是显式操作),不同类型的数据在进行运算时,不会像弱类型语言那样自动隐式转换,以保证数据类型的安全性和严谨性 。
(1)类型查看
使用 type()
函数可以获取对象的类型。例如:
a = 5
print(type(a)) # 输出 <class 'int'>
b = 3.14
print(type(b)) # 输出 <class 'float'>
(2)类型转换
int()
:用于将符合条件的值转换为整数。可以将浮点数转换为整数(向下取整,如int(3.8)
结果为3
);也能将表示整数的字符串(如'5'
)转换为整数 ,但字符串内容必须是合法整数形式,否则会报错。float()
:可把整数或表示数字的字符串转换为浮点数。整数转换时会在末尾添加.0
,如float(5)
结果是5.0
;只要字符串内容是合法数字形式(如'3.14'
)就能转换为浮点数。
2.4 数字与字符串转换
(1)数字转字符串
使用 str()
函数可以将数字转换为字符串。无论是整数、浮点数还是复数,都能通过该函数转换。例如:
num_int = 5
num_float = 3.14
num_complex = 2 + 3j
print(str(num_int)) # 输出 '5'
print(str(num_float)) # 输出 '3.14'
print(str(num_complex)) # 输出 '(2+3j)'
(2)字符串转整数
int()
函数用于将字符串转换为整数,但要求字符串的内容必须是合法的整数表示形式,比如 '123'
。如果字符串中包含非数字字符(除了正负号 ),转换时就会报错。示例如下:
s1 = '10'
s2 = 'abc'
print(int(s1)) # 输出 10
# print(int(s2)) # 会报错,因为 'abc' 不是合法整数形式
注意:int()只能将只含整数的字符串转换,否则报错。
三、补充
Python、Java 都属于强类型编程语言。在这类语言中,每个变量都有明确且固定的数据类型,一旦定义好就不能随意改变。
3.1 类型稳定性
数据类型不会因为运算等操作而自动改变。例如在 Python 中,整数 5
与浮点数 3.14
相加,5
不会自动转换为浮点数再运算,而是系统会根据规则将整数隐式转换为浮点数后进行运算,但这不是变量类型中途改变,而是遵循语言的运算规则。又如在 Java 中,定义 int a = 5;
,a
的类型始终是 int
,不会因为参与运算就变成其他类型。
3.2 类型转换方式
若要改变数据类型,必须通过显式的类型转换操作。在 Python 中,使用 int()
、float()
、str()
等函数进行转换;在 Java 中,使用强制类型转换(如 (int)3.14
把 3.14
强制转换为整数 )或者自动装箱拆箱机制(针对基本数据类型和包装类之间)等方式。 显式转换能让开发者清楚知道类型变化,增强代码的可读性和稳定性。