3.1 Python数据类型:数字
3.1.1 整型和浮点型
整数(int):没有小数部分的数字(包括长整数),可以表示正整数、负整数和零
a = 10
b = -20
c = 0
print(a, b, c)
浮点数(float):带有小数部分的数字,可以表示正数、负数和零
d = 3.14
e = -1.234
f = 0.0
print(d, e, f)
复数(complex):由实数部分和虚数部分组成的数字,虚部以字母j或J结尾
g = 3 + 4j
h = -1j
print(g, h)
3.1.2 运算符
1.算数运算符
设a = 10 ; b = 11
2.比较运算符
设a = 10 ; b = 11
3.赋值运算符
设:三个数为a;b;c
4.位运算符
设a = 10 ; b = 11
5.逻辑运算符
‘and’、‘or’和‘not’的优先级是not>and>or
6.成员运算符
7.身份运算符
8. 运算符优先级
3.2 Python数据类型:字符串
3.2.1 Python中的字符串
字符串用于表示和储存文本。字符串通常由单引号、双引号或者三引号包围,其中三引号包围的字符串可以由多行组成。大段的叙述性字符串通常由三引号包围。
3.2.2 字符串中的转义字符
3.2.3 操作字符串
3.2.4 字符串的索引和分片
Python中的字符串相当于一个不可变序列的列表,一旦声明一个字符串,则该字符串中的每个字符都有了自己固定的位置,不可改变。在Python中可以使用“[]”来访问字符串上指定位置上的字符,这种方式类似于C语言的数组。
字符串的索引通常从0开始,也就是说,第一个字符的索引为0,第二个字符的索引为1,以此类推。可以使用方括号[]来访问字符串中特定位置的字符,例如,如果字符串变量名为str,那么str[0]表示第一个字符,str[1]表示第二个字符,以此类推。字符串还支持负数索引,str[-1]表示最后一个字符,str[-2]表示倒数第二个字符,以此类推。需要注意的是,如果尝试访问超出字符串范围的索引,将会导致错误。
3.2.5 格式化字符串
字符串的格式化方法分为两种,分别为占位符(%)和format方式。占位符方式在Python2.x中用的比较广泛,随着Python3.x的使用越来越广,format方式使用的更加广泛。
1.占位符
%d
age = 29
print("my age is %d" %age)
#my age is 29
%s
name = "makes"
print("my name is %s" %name)
#my name is makes
%f
print("%6.3f" % 2.3)
#2.300
print("%f" %2.3)
#2.300000
2.format方法
Python3 格式化字符串是一种用来处理字符串中变量替换的技术,可以方便地将变量的值插入到字符串中。它使用花括号 {} 作为占位符,然后通过 format() 函数将变量的值插入到占位符中。
举个例子,假设我们有一个字符串 “My name is {} and I am {} years old.”,我们可以通过以下方式进行格式化:
name = "Alice"
age = 25
print("My name is {} and I am {} years old.".format(name, age))
这样输出的结果就是 “My name is Alice and I am 25 years old.”。
除了使用位置参数外,还可以使用关键字参数来格式化字符串。例如:
print("My name is {name} and I am {age} years old.".format(name="Bob", age=30))
这样输出的结果就是 “My name is Bob and I am 30 years old.”。
除了 format() 函数外,还可以使用 f-string 来格式化字符串。f-string 是 Python3.6 引入的一种新的字符串格式化方式,它使用类似于变量替换的语法来实现字符串格式化。例如:
name = "Charlie"
age = 35
print(f"My name is {name} and I am {age} years old.")
这样输出的结果也是 “My name is Charlie and I am 35 years old.”。
3.2.6 字符串、数字类型的转换
某些情况下,字符串可能完全由数字组成,并且该字符串还需要在脚本中进行算术运算。此时最简单的操作就是使用int()函数将字符串转换为数字。将数字转换为字符串可以使用str()函数。以下代码演示了在python中字符串与数字的相互转换。
3.2.7 原始字符串
Python3 中的原始字符串是指在字符串前加上一个前缀 r 或 R,这样所有的转义字符(如\n、\t、\r等)都会被当作普通字符而不会被转义。例如,如果你想表示一个Windows路径,你可以这样写:
path = r'C:\Users\Administrator\Desktop'
在这个字符串中,反斜杠不会被当作转义字符来解释,而是当作普通字符来处理。
另外需要注意的是,原始字符串并不是完全不支持转义字符,对于一些特殊字符(如单引号和双引号),仍然需要使用转义字符来表示。例如:
s = r'This is a raw string with a single quote: \''
这个字符串中,单引号前面的反斜杠就是用来转义单引号的。
3.3 Python数据类型:列表和元组
可保存大量数据的数据类型:列表和元组
3.3.1 创建和操作列表
Python列表是一种强大的数据结构,用于在程序中存储和操作一系列的值。列表是可变的(mutable),可以动态地增加、删除和修改其中的元素。在Python中,列表是最常用的数据结构之一,被广泛应用于各种编程场景,从简单的数据处理到复杂的数据结构和算法。
列表是一个有序的集合,其中的每个元素都可以是任意的数据类型,包括整数、浮点数、字符串、布尔值、甚至是其他的列表。列表用方括号([])来表示,元素之间用逗号(,)分隔。例如:
# 创建一个列表
fruits = ["apple", "banana", "cherry", "date"]
# 列表可以包含不同的数据类型
mixed_list = [1, 2.5, "three", True]
1.列表的基本操作
访问列表元素:可以使用索引来访问列表中的元素,索引从0开始,表示列表中第一个元素,依次类推。例如:
fruits = ["apple", "banana", "cherry", "date"] # 访问列表中的元素
print(fruits[0]) # 输出:apple
print(fruits[2]) # 输出:cherry
修改列表元素:可以通过索引来修改列表中的元素。例如:
fruits = ["apple", "banana", "cherry", "date"] # 修改列表中的元素
fruits[1] = "grape" # 将列表中第二个元素修改为grape
print(fruits) # 输出:["apple", "grape", "cherry", "date"]
增加元素:可以使用append()方法向列表末尾添加一个元素,使用insert()方法在指定的位置插入一个元素。例如:
fruits = ["apple", "banana", "cherry", "date"]
# 向列表末尾添加一个元素
fruits.append("fig")
print(fruits)
# 输出:["apple", "banana", "cherry", "date", "fig"]
# 在指定位置插入一个元素
fruits.insert(2, "grape") print(fruits)
# 输出:["apple", "banana", "grape", "cherry", "date", "fig"]
删除元素:可以使用remove()方法删除列表中的某个元素,使用pop()方法删除列表中指定位置的元素,并返回被删除的元素的值。例如:
fruits = ["apple", "banana", "cherry", "date"]
# 删除列表中的某个元素
fruits.remove("banana")
print(fruits)
输出:["apple", "cherry", "date"]
删除列表中指定位置的元素
removed_element = fruits.pop(1)
print("被删除的元素是:", removed_element) # 输出:被删除的元素是: cherry
print(fruits) # 输出:["apple", "date"]
列表长度:可以使用len()函数获取列表的长度,即列表中元素的个数。例如:
fruits = ["apple", "banana", "cherry", "date"]
# 获取列表的长度
print(len(fruits))
# 输出:4
列表切片:可以通过切片(slicing)来获取列表的子列表。切片使用冒号(:)表示,左边界是包含的,右边界是不包含的。例如:
fruits = ["apple", "banana", "cherry", "date"]
# 获取列表的子列表
print(fruits[1:3])
# 输出:["banana", "cherry"]
3.3.2 创建和操作元组
元组的特性与列表基本相同,元组是以圆括号“()”包围的数据集合。与列表不同的是,元组中的数据一旦确定就不能被改变,是不可变数据类型。元组可以应用在不希望数据被其他操作改变的场合。对于元组,只能对其使用分片和索引操作。
下列代码演示了在Python中元组的使用:
3.4 Python数据类型:字典
字典内的元素是由键/值对组成的,每个键必须是唯一的,它是以大括号 {} 包围的数据集合。字典与列表最大的不同,在于字典是无序的,在字典中通过键来访问成员。由于字典这种数据结构是使用哈希技术来实现的,所以可以使用某个键快速查找其对应值。字典某个键对应的值是可以改变的,可以包含其他类型,但是键是不可变的。字典中的成员位置只是象征性的,并不能通过其位置来访问该成员。字典中的成员是以“键:值”的形式来声明的。
总结如下:
(一)字典是另一种可变容器模型,且可存储任意类型对象。
(二)字典的每个键值 key=>value 对用冒号 : 分割,每个对之间用逗号(,)分割,整个字典包括在花括号 {} 中
格式如下所示:
d = {key1 : value1, key2 : value2, key3 : value3 }
注意:dict 作为 Python 的关键字和内置函数,变量名不建议命名为 dict。
(三)键必须是唯一的,但值则不必。
(四)值可以取任何数据类型,但键必须是不可变的,如字符串,数字。
一个简单的字典实例:
tinydict = {'name': 'runoob', 'likes': 123, 'url': 'www.runoob.com'}
(五)创建空字典
# 使用大括号 {} 来创建空字典
emptyDict = {}
# 打印字典
print(emptyDict)
# 查看字典的数量
print("Length:", len(emptyDict))
# 查看类型
print(type(emptyDict))
#使用内建函数 dict() 创建字典
emptyDict = dict()
# 打印字典
print(emptyDict)
# 查看字典的数量
print("Length:",len(emptyDict))
# 查看类型
print(type(emptyDict))
(六)访问字典里的值
#!/usr/bin/python3
tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
print ("tinydict['Name']: ", tinydict['Name'])
print ("tinydict['Age']: ", tinydict['Age'])
#输出结果
tinydict['Name']: Runoob
tinydict['Age']: 7
2、如果用字典里没有的键访问数据,会输出错误如下:
#!/usr/bin/python3
tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
print ("tinydict['Alice']: ", tinydict['Alice'])
#以上实例输出结果:
Traceback (most recent call last):
File "test.py", line 5, in <module>
print ("tinydict['Alice']: ", tinydict['Alice'])
KeyError: 'Alice'
(七)修改字典
向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对
如下实例:
#!/usr/bin/python3
tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
tinydict['Age'] = 8 # 更新 Age
tinydict['School'] = "菜鸟教程" # 添加信息
print ("tinydict['Age']: ", tinydict['Age'])
print ("tinydict['School']: ", tinydict['School'])
#以上实例输出结果:
tinydict['Age']: 8
tinydict['School']: 菜鸟教程
(八)删除字典元素
#!/usr/bin/python3
tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
del tinydict['Name'] # 删除键 'Name'
tinydict.clear() # 清空字典
del tinydict # 删除字典
print ("tinydict['Age']: ", tinydict['Age'])
print ("tinydict['School']: ", tinydict['School'])
(九)字典键的特性
字典值可以是任何的 python 对象,既可以是标准的对象,也可以是用户定义的,但键不行。
两个重要的点需要记住:
①创建时如果同一个键被赋值两次,后一个值会被记住,如下实例:
#!/usr/bin/python3
tinydict = {'Name': 'Runoob', 'Age': 7, 'Name': '小菜鸟'}
print ("tinydict['Name']: ", tinydict['Name'])
#以上实例输出结果:
tinydict['Name']: 小菜鸟
2、键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行
#!/usr/bin/python3
tinydict = {['Name']: 'Runoob', 'Age': 7}
print ("tinydict['Name']: ", tinydict['Name'])
#以上实例输出结果:
Traceback (most recent call last):
File "test.py", line 3, in <module>
tinydict = {['Name']: 'Runoob', 'Age': 7}
TypeError: unhashable type: 'list'
字典包含以下函数:
字典包含了以下内置方法:
3.5 Python数据类型:文件
文件也可以看做Python中的数据类型。当使用Python的内置函数open()打开一个文件后,将返回一个文件对象。open()函数的原型如下:
open(filename,mode)
其参数含义如下:
filename:要打开的文件名
mode:可选参数,指文件打开模式
完整语法格式及说明:
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)file: 必需,文件路径(相对或者绝对路径)。
mode: 可选,文件打开模式
buffering: 设置缓冲
encoding: 一般使用utf8
errors: 报错级别
newline: 区分换行符
closefd: 传入的file参数类型
opener: 设置自定义开启器,开启器的返回值必须是一个打开的文件描述符。
代码演示:
# 打开文件
file = open('example.txt', 'w+')
# 写入内容
file.write('hello, world!\n')
file.write('this is an example file.\n')
# 移动指针到文件开头
file.seek(0)
# 读取内容
content = file.read()
print(content)
# 关闭文件
file.close()
3.6 Python数据类型:布尔值
Python3 中有两种布尔值,分别是 True 和 False,用来表达逻辑的真与假。bool()函数可以创建一个布尔值,但一般直接使用文字True或者False来生成布尔值。Python的数字类型数据除0被解释成False以外,其余情况下均被解释成Ture。列表、字典、元组、字符串为空时会被解释成False,其它情况下则被解释成Ture。在 Python 中,True 的值为 1,False 的值为 0。以下是一些 Python3 布尔值相关的代码演示:
定义一个布尔变量:
a = True
b = False
判断语句中使用布尔值:
if a:
print("a 是 True")
else:
print("a 是 False")
#其它示例
x = True
y = False
if x:
print("x is True")
else:
print("x is False")
if y:
print("y is True")
else:
print("y is False")
#输出:
x is True
y is False
布尔运算符 and、or、not:
a = True
b = False
print(a and b) # False
print(a or b) # True
print(not a) # False
判断数据类型是否为布尔型:
a = True
print(isinstance(a, bool)) # True
b = 0
print(isinstance(b, bool)) # False
3.7 Python的流程控制语句
通常情况下,Python脚本总是按顺序执行的。不过,对于一些复杂的程序,可能需要根据执行过程中出现的不同情况选择性执行一部分语句而跳过另一部分语句,或者重复执行某一部分语句,这时就需要使用Python的流程控制语句。
Python脚本中的流程控制语句控制着脚本的执行流程,根据一定的条件来执行脚本中不同的语句,以实现不同的功能。
3.7.1 分支结构:if语句
if语句是基本的条件测试语句,用来判断可能遇到的不同情况,并针对不同的情况选择执行某一部分语句。
if语句执行流程:
比较运算符:
if语句嵌套时一定要注意缩进。
3.7.2 循环结构:for语句
for语句是Python中的循环控制语句。for语句可以用于循环遍历某个对象,他还具有一个附带的else块。附带的else块是可选的,主要用于处理for语句中包含的break语句。for语句中的break语句可以在需要的时候终止for循环。如果for循环未被break语句终止,则会执行else块中的语句。在for语句中还可以使用continue语句,continue语句可以跳过位于其后的语句,开始下一轮循环。
for语句基本用法和结构
Python3 的 for 循环语句可以用于遍历任何序列对象,例如列表、元组、字符串等。其基本语法结构如下:
for variable in sequence:
# 循环体代码块
其中,variable
为循环变量,sequence
为序列对象,循环体代码块将会重复执行,直到序列中的所有元素都被遍历完毕。
下面是一个简单的示例,用 for 循环遍历一个列表:
fruits = ['apple', 'banana', 'orange']
for fruit in fruits:
print("I like", fruit)
#输出结果为:
I like apple
I like banana
I like orange
在上面的示例中,for 循环首先将列表 fruits
中的第一个元素 apple
赋值给循环变量 fruit
,然后执行循环体代码块,接着将列表中的下一个元素 banana
赋值给循环变量 fruit
,再次执行循环体代码块。重复执行这个过程,直到列表中的所有元素都被遍历完毕。
如果你需要在循环体中访问元素的索引,可以使用 Python3 提供的 enumerate()
函数,将序列对象转换为带有索引和元素值的元组。例如:
fruits = ['apple', 'banana', 'orange']
for index, fruit in enumerate(fruits):
print("The", index+1, "fruit is", fruit)
#输出结果为:
The 1 fruit is apple
The 2 fruit is banana
The 3 fruit is orange
for循环高级用法
Python3 中的 for 循环可以遍历任何可迭代对象,例如列表、元组、字典、集合、字符串等等。除了基础用法之外,还有一些高级用法:
使用 zip() 函数来同时遍历多个序列:
fruits = ['apple', 'banana', 'orange']
prices = [0.5, 0.3, 0.8]
for fruit, price in zip(fruits, prices):
print(fruit, price)
使用 reversed() 函数来逆序遍历一个序列:
fruits = ['apple', 'banana', 'orange']
for fruit in reversed(fruits):
print(fruit)
使用 sorted() 函数来按照特定规则遍历一个序列:
fruits = ['apple', 'banana', 'orange']
for fruit in sorted(fruits, key=len):
print(fruit)
for 循环中实现跳出循环和继续循环
在 for 循环中,可以使用 break 语句来跳出循环,使用 continue 语句来继续循环。
break 语句用于在执行循环过程中立即退出循环,跳转到循环后面的语句继续执行。
for (int i = 0; i < 10; i++) {
if (i == 5) {
break;
}
cout << i << endl;
}
在上面的代码中,当 i 的值为 5 时,会执行 break 语句,跳出循环,不再执行后面的语句。
continue 语句用于在执行循环过程中立即跳过当前循环,直接进入下一次循环。例如:
for (int i = 0; i < 10; i++) {
if (i == 5) {
continue;
}
cout << i << endl;
}
在上面的代码中,当 i 的值为 5 时,会执行 continue 语句,直接跳过当前循环,继续执行下一次循环。
3.7.3 循环结构:while语句
while语句也是循环控制语句,与for语句不同的是,while语句只有在测试条件为假时才会停止。在while的语句块中一定要包含改变测试条件的语句,以保证循环能够结束,避免死循环的出现。
while语句包含与if语句相同的条件测试语句,如果条件为假,则终止循环。while语句有一个可选的else语句块,与for循环中的else语句块一样,当while循环不是由break语句终止时,则会执行else中的语句块中的语句。continue语句也可以用于循环中,也是跳过continue后的语句,进入下一轮循环。while语句的一般格式如下:
在while循环中,可以使用以下关键字:
- break:跳出整个循环体,继续执行循环体后面的语句。
- continue:跳出本次循环,继续执行下一次循环。
- pass:不执行任何操作,只是为了保持程序结构完整性。 同时,还可以在while循环中使用if、elif、else等条件语句,以及各种算术、比较、逻辑运算符等。需要注意的是,在while循环中要谨慎使用无限循环,避免程序陷入死循环。
引用说明
《Python数据分析从入门到精通》 张啸宇 李静 编著
P叔带你学Python-3-列表及其操作_python3 列表-CSDN博客
Python3 字典与集合 | 菜鸟教程(七)_python3 内置函数 列表 字典-CSDN博客
Python3 File(文件) 方法 | 菜鸟教程(十三) 详解!!!_python3 file函数-CSDN博客