python是 Guido van Rossum设计的一款面向对象的编程语言。首次发布时间为1991 年 2 月。受到 C 与 C++、Java 与 Perl、Lisp 与 Haskell语言的启示,但 ABC 语言对 Python语 言有主要的影响,Python 的创立者吉多·范罗苏姆(Guido van Rossum)在 1980 年代中期曾为 ABC 系统工作了多年,ABC 是一种指令式通用程式语言和编程环境。
python也影响了 Apache Groovy、JavaScript、 Ruby 与 Swift的发展。
python特征:
- 解释的、高级的、通用的编程语言
- 面向对象的编程语言
- 过程式、函数式、结构化和反射式编程语言
一、数据结构
1、 关于字符串
字符串(string)是一种不可变的数据类型,用于表示文本信息。字符串是由一系列字符组成的,这些字符可以是字母、数字、标点符号或特殊字符。在 Python 中,字符串可以用单引号(')、双引号(")或三引号(''' 或 """)来表示。
字符串是 Python 编程中非常重要的部分,它们常常用于:
- 存储文本数据。
- 显示信息给用户。
- 处理和分析文本内容(如分割、替换、查找子字符串等)。
字符串有很多内置的方法(functions)和操作符(operators)可以用来操作它们。例如:
+
操作符用于连接两个字符串。
*
操作符用于重复字符串。
in
关键字用于检查一个字符串是否包含另一个子字符串。
len()
函数用于获取字符串的长度。
str.upper()、str.lower()
等方法用于转换字符串的大小写。
str.split()
方法用于将字符串分割成列表。
str.replace()
方法用于替换字符串中的子字符串。
字符串是不可变的,这意味着你不能直接修改字符串中的某个字符。但是,你可以创建新的字符串来反映你想要的修改。例如:
示例:
s = "hello"
print(s) #hello
s = s.replace("e", "a") # 创建新的字符串 "hallo" 并赋值给 s
print(s) #hallo
在这个例子中,replace() 方法返回一个新的字符串,其中所有的 "e" 都被替换成了 "a",然后这个新字符串被赋值给了变量 s。原始的字符串 "hello" 并没有改变,因为字符串是不可变的。
2、关于字典
字典(dictionary)是一种可存储键值对(key-value pair)的数据结构。字典中的每个元素都包含一个键和一个值,键用于唯一标识元素,而值是与该键相关联的数据。你可以使用键来访问、修改或删除对应的值。
字典使用大括号 {} 来表示,其中每个键值对使用冒号 : 分隔,而键值对之间使用逗号 , 分隔。
示例:
# 创建一个字典
my_dict = {"name": "Alice","age": 30,"city": "New York"
}# 访问字典中的值
print(my_dict["name"]) # 输出:Alice
print(my_dict["age"]) # 输出:30# 修改字典中的值
my_dict["age"] = 31
print(my_dict["age"]) # 输出:31# 添加新的键值对
my_dict["country"] = "USA"
print(my_dict) # 输出:{'name': 'Alice', 'age': 31, 'city': 'New York', 'country': 'USA'}# 检查键是否存在于字典中
if "city" in my_dict:print("City is in the dictionary.")# 删除键值对
del my_dict["city"]
print(my_dict) # 输出:{'name': 'Alice', 'age': 31, 'country': 'USA'}
二、关于函数
1、format() 函数
format() 函数在 Python 中是一个用于字符串格式化的强大工具。它返回一个格式化后的字符串。这个函数允许创建复杂的字符串模板,并将各种数据类型插入到这些模板中。
format() 有两种用法:
1、 基本用法
通过 {} 占位符在字符串中定义变量位置,然后使用 format() 方法插入值。
2、命名参数
也可为 {} 占位符提供名称,并在 format() 方法中使用这些名称来插入值
。
3、支持更复杂的格式化选项,例如指定字段宽度、精度、转换类型等
示例:
str1 = "Hello, {}!"
str2 = str1.format("python")
print(str2) # 输出:Hello, python!str1 = "Hello, {name}!"
str2 = str1.format(name="python")
print(str2) # 输出:Hello, python!template = "The value is {value:.2f}."
result = template.format(value=3.14159)
print(result) # 输出:The value is 3.14.
综上,format() 函数返回一个根据提供的参数格式化后的字符串。它是 Python 中进行字符串格式化的强大工具之一。
2、round()函数
round()函数用于对数字进行四舍五入。它接受两个参数:要四舍五入的数字以及要保留的小数位数。
语法:
round(number, ndigits)
number
是要进行四舍五入的数字。
ndigits
是可选参数,表示要保留的小数位数。如果省略该参数,round()函数会将数字四舍五入到最接近的整数。
示例:
# 四舍五入到整数
result = round(3.14159)
print(result) # 输出:3# 四舍五入到指定的小数位数
result = round(3.14159, 2)
print(result) # 输出:3.14# 对负数进行四舍五入
result = round(-3.14159, 2)
print(result) # 输出:-3.14#round()函数还可以与变量和表达式结合使用,并在需要时进行数值计算或数据分析。
data = [1.2, 2.3, 3.4, 4.5, 5.6]
mean = round(sum(data) / len(data), 2)
print(mean) # 输出:3.4
3、 trunc() 方法
math 模块中的 trunc() 方法用于返回数字的整数部分
,即去除小数部分。这与向下取整 (//) 或四舍五入 (round()) 不同。trunc() 总是简单地去除小数部分,而不考虑小数部分的大小。
示例:
import mathprint(type(math.trunc(7.2))) #输出:<class 'int'>
print(math.trunc(7.2)) # 输出:7
print(math.trunc(-7.2)) # 输出:-7
print(math.trunc(3.0)) # 输出:3
以上示例中,无论数字是正数还是负数,trunc() 都会返回其整数部分。
trunc() 总是向零方向截断数字。这与 // 运算符(整数除法)的行为相似,但 trunc() 可以用于浮点数。
import mathprint(math.trunc(7.2)) # 输出:7
print(7.2//1.0) #7.0
print(7.2//1) #7.0
print(7//1) #7
4、内置 len() 函数
用于字符串长度获取:
mystr = "Hello, World!"
length = len(mystr)
print(length) # 输出:13
三、知识点
1、print(0.1 + 0.2 == 0.3)
这段代码会返回 False。
原因:浮点数的计算可能会受到精度问题的影响。
当将两个浮点数相加时,由于计算机内部表示浮点数的限制,结果可能并不完全精确。在这个例子中,0.1 + 0.2 的结果可能是一个接近 0.3 但并不完全等于 0.3 的浮点数。
可使用 math 的 isclose 代替,示例如下:
import math
print(0.1 + 0.2 == 0.3) #输出:False
print(math.isclose(0.1 + 0.2, 0.3)) #输出:True
2、复数的表达形式
(1)代数形式
z=a+bi
(2)极坐标形式(三角形式)
z=r(cosθ+isinθ)
在python中没有极坐标形式,故可采用以下方式:
k1 = 2 + 3J
k2 = complex(2, 3)
k3 = 2 + 3j
print(k1) # 输出:(2+3j)
print(k2) # 输出:(2+3j)
print(k3) # 输出:(2+3j)
3、inf 的类型是float
python 中的正无穷或负无穷,使用 float(“inf”) 或 float(“-inf”) 来表示。
4、系统将函数调用的参数和局部变量存放在内存的栈(stack)中。
5、假设 i 为 5,j 为 4,i + j 类似于i.add(j)
常见的做法是直接使用 + 运算符,Python会自动调用 add 方法。
6、包含关系
通常使用 in 运算符,_Python会自动调用__contains__方法。
示例:
s1 = "hello"
s2 = "lo" # 使用 __contains__ 方法
result = s1.__contains__(s2)
print(result) # 输出: True # 使用 in 运算符,这实际上也是调用 __contains__ 方法
result = s2 in s1
print(result) # 输出: True
7、生成所有字母:string.ascii_letters
import stringall_ascii_letters = string.ascii_letters
all_ascii_letters2 = all_ascii_letters = string.ascii_lowercase + string.ascii_uppercase
print(all_ascii_letters)
print(all_ascii_letters2)
运行结果:
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
string.ascii_lowercase 的值是 ‘abcdefghijklmnopqrstuvwxyz’。
string.ascii_uppercase 的值是 ‘ABCDEFGHIJKLMNOPQRSTUVWXYZ’。
8、print(0xA + 0xB + 0xC) #输出:33
以0x或0X开头的数字,它表示这是一个十六进制数。Python会将其自动转换为相应的十进制数,然后执行算术运算
9、比较
比较操作是一种基本的操作,它允许我们比较两个或多个值,并返回一个布尔值(True或False)来表示比较的结果。
哪个函数用于比较任意两个字典(例如 dict1 和 dict2 )的元素是否相等?
operator.eq(dict1, dict2)
列表:
a = [1, 2]
b = [2, 3]
import operator
print(operator.eq(a, b)) #False
print(a==b) #False
10、转换
以下哪个函数将单个字符转换为其在 python 中 ASCII 数值?
ord(x)
11、random 模块
(1)随机生成数字:
random.randrange(3)
:用于生成一个介于0(包括)和3(不包括)之间的随机整数。它会返回0、1或2这三个数中的任意一个。
注意,random.randrange(n)
的行为与 random.randint(0, n-1)
是相同的。
- randrange 通常用于非负的结束范围,且不包括结束值
randint
则包括起始和结束值。因此,random.randint(0, 2) 和 random.randrange(3) 的效果是相同的。
random.choice(range(0, 3))
也会生成一个介于0(包括)和3(不包括)之间的随机整数,也就是0、1或2中的一个。random.choice() 函数从提供的序列中随机选择一个元素。range(0, 3) 生成一个包含0、1和2的序列(实际上是一个不可变的序列对象,类似于列表,但更节省内存)。然后,random.choice() 从这个序列中随机选择一个元素。
与 random.randrange(3) 相比,random.choice(range(0, 3)) 在功能上是等效的,但它们在实现上略有不同。randrange 是直接计算一个随机数,而 choice 则是从一个序列中随机选取一个元素
。
(2)打乱列表
random.shuffle(x)
方法:就地(in-place)打乱列表 x 中的元素的顺序。这意味着,它直接修改了传入的列表 x,而不是返回一个新的打乱顺序的列表。
当 x = [1, 2, 3] 时,调用 random.shuffle(x) 后,x 的顺序将被随机打乱。可能的结果包括 [2, 1, 3]、[3, 2, 1]、[1, 3, 2] 等。每次调用 random.shuffle(x) 都会生成不同的随机顺序(除非随机数生成器的状态被重置)。
import randomx = [1, 2, 3]
random.shuffle(x)
print(x) # 输出可能是 [2, 1, 3],[3, 1, 2],[1, 3, 2] 等随机顺序
以上示例:x 是一个列表,将其传递给 random.shuffle() 方法来打乱它的顺序。注意,x 本身被修改了,而不是创建了一个新的打乱顺序的列表。
另:
random.shuffle()
只适用于可变序列,如列表。
12、环境变量PYTHONPATH
在Python中,环境变量PYTHONPATH可以被用来替代或扩展模块的搜索路径。当Python解释器导入一个模块时,它会按照特定的顺序搜索模块。这个顺序包括内置模块、当前目录中的模块,以及环境变量PYTHONPATH和sys.path中指定的目录。
13、标识符是区分大小写的
标识符最大长度不受限制,但是可能违反了 PEP-8,限制了 79 字符。