Python01-语法与数据结构

image

一、 变量Variable

变量是一种存储数据的载体,计算机中的变量是实际存在的数据或者说是存储器中存储数据的一块内存空间。变量的值可以被读取和修改。Python 中变量是对数据和对象的地址进行引用,变量三个重要的特性: id(变量值的内存空间地址,使用id0查看》、type(数据类型,使用type()查看)、变量值(存储值的本身)。

#变量名 赋值符号 变量值

变量名:命名规范(可以使用字母、数字和下划线_、不能以数字开头、不能使用关键字/保留字);

赋值符号:=,将右侧的变量值内存地址绑给左侧的变量名;

变量值:事物的状态,定义了之后可以用变量名来访问。变量值有引用次数,一旦这块空间的引用次数为0,就意味着没有途径找到这块空间了,如果不进行清理,会导致内存被占用。一旦找不到这块空间,就会出发 Python 的内存管理(垃圾回收机制)。

二、 数据类型

2.1 数据类型

2.1.1 标准数据类型

基本数据类型literals

  • 数字Numeric:整数(int)、浮点数 (Float)、复数 (complex)

  • 布尔boolean

  • 字符串str:\转义符、r忽略转义符的作业(r”abc”)、+多个字符串的连接,索引、切片(start:stop:step)

复合数据类型(容器类型): 列表List、元组Turple、字典Dictionary、集合Set

空类型None

Python中分为六种基本数据类型

  • 不可变类型(又叫静态数据类型,没有增删改操作):数字(number)、、布尔(boolean)、字符串(string)、元组(tuple)
  • 可变类型(又叫动态数据类型,支持增删改操作):列表(list)、字典(dictionary)、集合(set)

2.2 基本数据类型

2.2.1 数字Numeric

整数:统一使用int类型表示

浮点数:统一使用float类型表示

复数

2.2.2 布尔boolean

布尔类型(bool)是 整数类型(int)的一个子类,用来描述逻辑关系的正确与否。

假值状态 :在 Python 中,所有的对象都可以判断是否为真。其中,只有下面列出的几种情况得到的值为假,其他对象在 if 或者 while 语句中都表现为真。

常见的假值类型: False 、None 、数值中的零(包括 0、0.0、虚数 0) 、空序列(包括字符串、空元组、空列表、空字典)。

2.2.3 字符串string

定义:是由引号包裹的任意字符组成的不可变序列,用于表示文本类型数据

a. 转义字符: Python 转义字符逐个详解Python 转义字符逐个详解 - 知乎

b. 字符串下标 : 下标是指从 0 开始的数字编号,也称为索引。

语法格式:字符串对象[下标]

注意: 下标在使用时,不能大于等于该字符串所有字符的个数,否则会产生下标越界错误。

c. 字符串格式化:

字符串格式化是一种将变量或值插入到字符串中的过程,以创建具有动态内容的字符串。

format()方法 : 是一种传统的字符串格式化方法。它使用占位符 {} 来表示要插入的变量或值,并通过传递参数来替换这些占位符。

基本用法 : 通过参数的顺序将相应的值传递给占位符,从而替换字符串中的占位符部分。最终生成的字符串是根据传入的值进行了相应的替换。

eg:“My name is {}, and I am {} years old.”.format(name, age)

位置参数: 位置参数来指定变量或值的插入顺序。可以在占位符 {} 中使用索引号来指定要插入的参数的位置。

eg: “My name is {0}, and I am {1} years old.”.format(name, age)

关键字参数:可以根据参数名将值插入到相应的位置。最终生成的字符串是根据传入的值和参数名进行了相应的替换。

eg: “My name is {name}, and I am {age} years old.”.format(name=name, age=age)

格式化选项 :使用格式化选项来控制插入值的格式,如字段宽度、对齐方式、小数点精度等。

eg:“The value of pi is approximately {:.2f}”.format(pi= 3.141592653589793)

f-string字符串 : Python 3.6及更高版本引入的一种简洁且直观的字符串格式化方法。它使用前缀f定义字符串,并使用花括号 {} 来插入变量或值。

基本用法:字符串前面加上 f 前缀表示这是一个 f-string。在字符串中使用花括号 {} 来插入变量或表达式,它们会在运行时被替换为相应的值。在花括号内部,可以直接使用变量名或表达式,它们会被自动计算并插入到字符串中。最终生成的字符串根据插入的变量或表达式而动态变化。

eg: f"My name is {name}, and I am {age} years old."

格式化选项 :对齐方式 :f-string 的格式化选项方式使用同 format()函数一致;

表达式和函数调用 :在f-string中,可以使用表达式和函数调用来生成动态的字符串内容。

eg:f"{‘Hello’ if age < 30 else ‘Hi’} {name.upper()}"

d. 字符串操作


2.2.4 类型转换

自动转换 :也称为隐式类型转换,程序在执行过程中自动完成,将数据精度低转换为数据精度高的类型。

强制转换 :也称为显式类型转换,需要在代码中使用类型函数来转换。

Python 提供了多种类型转换的函数: int(x):将 x 转换为整数。 float(x):将 x 转换为浮点数。 complex(x):将 x 转换为复数。 bool(x):将 x 转换为布尔值。 str(x):将 x 转换为字符串。 chr(x): 将一个整数转换为一个字符。

2.3 列表list

定义: 有序的可变元素的集合,列表是动态的(解释器动态分配内存大小),可以随时扩展和收缩列表是异构的,可以同时存放不同类型的对象列表中允许出现重复元素

使用-创建列表:
image

使用-运算符:

重复:* a = [1]*5 #print(a) → [1,1,1,1,1]

合并:+ a = [1,2]+[3,4] #pirnt(a) → [1,2,3,4]

使用-成员检测:

in / not in

列表常用方法:

列表嵌套: 嵌套列表是指在列表中存放列表,列表的常用方法都适用于嵌套列表。

列表推导式:

匿名函数: 没有名字的函数,python中用lambda表达式创建匿名函数。

场景:需要一个函数,通常只是用一次,可以指定短小的回调函数。

result:调用lambda表达式。

result = lambda[arg1[,arg2,…,argn]]: expression

[arg1[,arg2,…,argn]]:可选,指定要传递的参数列表

expression:必选,指定一个时间具体功能的表达式

image

2.3 元组tuple

定义: 有序的不可变对象集合;使用小括号包围,各个对象之间使用逗号分隔;元组是异构的,可以包含多种数据类型。

有序 不可变 异构
索引、切片 不支持增删改 存放不同类型的数据

使用-创建:
image

常用方法

方法 效果 入参 返回
index 返回与目标元素相匹配的首个元素的索引值;目标必须在元组中存在,否则会报错(ValueError) 对象item 索引值
count 返回某个元素出现的总次数 对象item 次数

**元组解包:**把一个可迭代对象里的元素,一并赋值到对应的变量组成的元组中。

#传统逐个赋值的方式 t = (1,2) a = t[0] b = t[1] #使用元组解包 a,b = (1,2)

元组与列表

  • 相同点:
    • 都是有序的
    • 都是异构的,能够包含不同类型的对象
    • 都是支持索引和切片
  • 区别
    • 声明方式不同,元组使用( ),列表使用
    • 列表是可变的,元组是不可变的

2.4 集合set

**定义:**无序的唯一对象集合(任何对象都不会重复),用大括号{ }包围,对象之间互相使用逗号分隔;集合是动态的,可以随时添加或删除元素;集合是异构的,可以包含不同类型的数据。
image

使用-创建:

#1、使用大括号{ }填充元素 st1 = {1,2,3} #2、使用构造方法创建集合 st2 = set #空集合 st3 = set(‘abc’) li = [1,2,3] st4 = set(li) #使用集合推导式 st5 = {x for x in li} #注意:不要单独使用{}来创建空集合 st7 = {} #这是字典类型

使用-成员检测:

in / not in

集合方法

集合运算

image
image

集合推导式

st = {x for x in ‘hogwarts’ if x in ‘hello world’}

print(st) #{‘h’,‘o’,‘w’,‘r’}

三、 运算符0perators

算术运算符 描述 比较运算符 描述 赋值运算符 描述 逻辑运算符 描述 成员运算符 描述
+ == 等于 = 简单赋值 and in 在里面
- != 不等于 += 加法赋值 or not in 不在
* > 大于 -= 减法赋值 not
/ < 小于 *= 乘法赋值 身份运算符
% 取模 >= 大于等于 /= 除法赋值 is 两个标识符是不是同一个运算对象
** <= 小于等于 %= 取模赋值 is not 两个标识符是不是不同运算对象
// 取整除 **= 幂赋值
//= 取整赋值

四、函数Functions

作用:是组织好的,可重复使用的,用来实现单一或相关联功能的代码块;能提高应用的模块性和代码的重复利用率;

定义:

def function_name([parameter_list]): [‘’’ comments ‘’‘] [function_body] 函数定义关键词 函数名称([参数]参数列表,可为空): [’‘‘注释’’'] [函数体]

注意事项:pycharm自动格式化快捷键 CTRL+Alt+L

参数传递:

形式参数:定义函数时,函数名称后面括号中的参数;

实际参数:调用函数时,函数名称后面括号中的参数;

位置参数:数量、位置必须与定义一致;

关键字参数:使用形式参数的名字确定输入的参数值;不需要与形式参数的位置完全一致;

参数设置默认值:指定默认值的形式参数必须放在所有参数的最后,否则会产生语法错误;

def function_name(…, [param=default_value]):

[function_body]

函数返回值:return XXX,可选