流程控制语句

顺序,分支,循环

一.分支

1.单分支

语法:

if   条件判断(True/False):

        语句

根据条件表达式返回的结果决定是否执行语句内容

如果返回true,则执行语句;若返回falsse,则语句不会被执行。

2.双分支

语法:

if   条件判断(True/False):

        语句1

else:

        语句2

3.多分支

语法:

if   条件判断(True/False):

        语句1

elif   条件判断(True/False):

        语句2

        ......        

else:

        语句n

使用多分支语句,需要注意以下几点:

if语句至多有1个else语句,else语句在所有的elif语句之后;

if语句可以有若干个elif语句,他们必须在else之前;

一旦其中一个分支检测为true,其他的elif以及else语句都不会执行;

score = 85
if score >= 90:
    print("优秀")
elif score >= 80:
    print("良好")
elif score >= 60:
    print("及格")
else:
    print("不及格")
 

4.match case语句

match subject: #subject是表达式,返回结果和后面case的值进行匹配
    case pattern1:
        # 处理 pattern1
    case pattern2:
        # 处理 pattern2
    case _:
        # 默认情况
 
point = (3, 4)
match point:
    case (0, 0):
        print("原点")
    case (0, y):
        print(f"Y轴上,y={y}")
    case (x, 0):
        print(f"X轴上,x={x}")
    case (x, y):
        print(f"坐标({x}, {y})")
 

5.三目运算符

condition ? exprIfTrue : exprIfFalse
 
  • condition:布尔表达式,结果为 true 或 false。
  • exprIfTrue:条件为 true 时执行的表达式。
  • exprIfFalse:条件为 false 时执行的表达式。
let score = 85;
let grade = score >= 90 ? "A" : score >= 80 ? "B" : "C";
console.log(grade); // 输出:"B"
 

二.循环

1.while循环

while condition:
    # 循环体代码
    # 需包含改变条件的语句,避免无限循环
 
  1. 条件前置:先判断条件,再决定是否执行循环体。
  2. 手动控制循环变量:需在循环体内修改条件相关的变量,否则可能导致无限循环。
  3. 适用场景:适合循环次数不确定的情况(如用户输入验证、动态数据遍历)。

while-else语句

while condition:
    # 循环体代码
else:
    # 循环正常结束后执行的代码
 
  • 当condition为True时,循环体代码会重复执行。
  • 当condition变为False时,循环终止,并执行else块中的代码。
  • 如果在循环体中遇到break语句,循环会立即终止,且else块不会执行。

利用break中断while循环

count = 0
while count < 3:
    if count == 1:
        break #结束整个循环
    print(f"Count is {count}")
    count += 1
else:
    print("Loop ended normally")
 

2.for语句

for i in range(3):
    print(i)
else:
    print("Loop completed")
 

for  临时变量 in  可迭代对象:

        重复执行的代码(循环体)

else:

        循环正常结束时候,执行的代码

#遍历列表
for i in [10,20,30]
    print(i)

#遍历字符串
for str in "hello world"
    print(str)

#遍历range数列
for i in range(10):
    print(i)


range(a,b):从a到b-1,左闭右开

range使用

range(stop)
range(start, stop[, step])
 

不指定起始值时,默认从0开始到stop-1结束:

for i in range(5):
    print(i)  # 输出0,1,2,3,4
 

添加步长参数可控制序列间隔:

for i in range(0, 10, 2):
    print(i)  # 输出0,2,4,6,8
 

负步长可生成递减序列:

for i in range(5, 0, -1):
    print(i)  # 输出5,4,3,2,1
 

生成一个九九乘法表

for i in range(1, 10):  # 外层循环控制行数(1到9)
    for j in range(1, i + 1):  # 内层循环控制列数(1到当前行数)
        print(f"{j} x {i} = {i * j}", end="\t")  # 使用制表符对齐
    print()  # 每行结束后换行
 

3.循环中的关键字

continue关键字:跳过当次正在进行的循环,后面代码也不再执行,直接进入下一轮循环

for i in range(5):
    if i == 2:
        continue
    print(i)  # 输出 0 1 3 4
 

break关键字:立即停止当前循环,跳出当前循环体

for i in range(10):
    if i == 5:
        break
    print(i)  # 输出 0 1 2 3 4
 

pass关键字:空操作占位符,保持语法完整性但不执行任何操作。常用于未完成的代码块。

for i in range(3):
    pass  # 无操作
 

三.列表

列表是一个可变的、有序的元素集合

列表使用[]定义,数据之间使用,分隔

列表中每个元素都有对应的位置值,称为索引从起始从0开始向后逐个递增,并且从末尾-1开始逐个向前递减

列表中元素可以是不同类型

1.创建列表

fruits = ["apple", "banana", "cherry"]
numbers = [1, 2, 3, 4]
mixed = [1, "text", True]
 
#访问列表中的元素
print(numbers[0]) #1
print(numbers[1]) #2
print(numbers[-1]) #4

2.列表切片

Python中的列表切片允许提取列表的一部分,语法为list[start:stop:step]。start表示起始索引(包含),stop表示结束索引(不包含),step表示步长(默认为1)。

numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
slice_part = numbers[2:7]  # 结果为 [2, 3, 4, 5, 6]

#打印所有元素
print(numbers[:]) #结果[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

#取索引从2到4(不包含)的元素
print(numbers[2:4])

#从索引2开始到末尾的元素
print(numbers[2:])
 
#索引从0开始到2(不包含)的元素
print(numbers[:2])

#倒序取所有元素
print(numbers[::-1])


numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
even_indices = numbers[::2]  # 结果为 [0, 2, 4, 6, 8]
reversed_list = numbers[::-1]  # 结果为 [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

3.列表中添加元素

使用append()方法
append()方法用于在列表末尾添加单个元素。该方法直接修改原列表,无返回值。

my_list = [1, 2, 3]
my_list.append(4)  # 添加后列表变为 [1, 2, 3, 4]
 

使用insert()方法
insert()方法可在指定索引位置插入单个元素。需提供插入位置的索引和元素值。

my_list = [1, 3]
my_list.insert(1, 2)  # 在索引1处插入2,列表变为 [1, 2, 3]
 

使用extend()方法
extend()方法用于在列表末尾添加多个元素(通常为可迭代对象)。与append()不同,它会将可迭代对象的元素逐个加入列表。

my_list = [1, 2]
my_list.extend([3, 4])  # 添加后列表变为 [1, 2, 3, 4]
 

4.列表相加,列表乘法

list1 = [1, 2, 3]
list2 = [4, 5, 6]
result = list1 + list2
print(result)  # 输出: [1, 2, 3, 4, 5, 6]
 
list1 = [1, 2, 3]
result = list1 * 3
print(result)  # 输出: [1, 2, 3, 1, 2, 3, 1, 2, 3]
 

5.修改列表中的元素

通过索引修改单个元素

my_list = [1, 2, 3, 4]
my_list[1] = 20  # 将索引1的元素从2改为20
print(my_list)   # 输出: [1, 20, 3, 4]
 

通过切片修改多个元素

my_list = [1, 2, 3, 4]
my_list[1:3] = [20, 30]  # 修改索引1到2的元素
print(my_list)           # 输出: [1, 20, 30, 4]
 

列表解析式修改

my_list = [1, 2, 3, 4]
my_list = [x*2 for x in my_list]  # 创建新列表,每个元素乘以2
print(my_list)                    # 输出: [2, 4, 6, 8]
 

注意事项

  • 索引从0开始,注意不要越界
  • 切片修改时,右侧可迭代对象的长度不必与切片长度相同
  • 列表解析式会创建新列表,原列表对象会被替换

6.检查成员成员是否为列表中的元素

list1 = [100,"liujie",200]
print(100 in list1) #true

7.获取列表长度

list1 = [100,200,300]
print(len(list1)) #3

8.求列表中元素的最大、最小、加和

numbers = [3, 1, 4, 1, 5, 9, 2]
max_value = max(numbers)
min_value = min(numbers)
total = sum(numbers)

print(f"最大值: {max_value}")
print(f"最小值: {min_value}")
print(f"总和: {total}")
 

9.遍历列表

使用for循环直接遍历
直接使用for item in list结构可以依次访问列表中的每个元素:

my_list = [1, 2, 3]
for item in my_list:
    print(item)
 

通过索引遍历
利用range(len(list))获取索引范围,通过下标访问元素:

for i in range(len(my_list)):
    print(my_list[i])
 

使用enumerate函数
同时获取元素和对应的索引:

for index, item in enumerate(my_list):
    print(f"Index: {index}, Value: {item}")
 

10.列表的删除

删除列表中所有匹配的特定值

使用 list.remove(value) 方法可以删除列表中第一个匹配的指定值。若需删除所有匹配值,需结合循环或列表推导式。

my_list = [1, 2, 2, 3, 2]
my_list.remove(2)  # 仅删除第一个2,列表变为 [1, 2, 3, 2]
# 删除所有2
my_list = [x for x in my_list if x != 2]  # 列表推导式生成新列表 [1, 3]
 

使用 del 语句或 list.pop() 方法可以删除列表中指定位置的元素。

  • del list[index]:直接删除索引位置的元素,不返回被删除的值。
  • list.pop(index):删除并返回索引位置的元素,若省略 index 则默认删除最后一个元素。
my_list = [1, 2, 3, 4, 5]
del my_list[1]  # 删除索引1的元素,列表变为 [1, 3, 4, 5]
popped_item = my_list.pop(2)  # 删除索引2的元素,返回4,列表变为 [1, 3, 5]
 

11.嵌套列表

nested_list = [1, [2, 3], [4, [5, 6]]]
 
value = nested_list[1][0]  # 获取子列表中的第一个元素
 

12.列表推导式

[expression for item in iterable if condition]
 
  • expression:对当前迭代项的操作或表达式。
  • item:迭代变量,代表可迭代对象中的每个元素。
  • iterable:可迭代对象(如列表、字符串、元组等)。
  • condition(可选):过滤条件,仅当条件为真时保留该项。

基础用法

squares = [x**2 for x in range(10)]  
# 输出:[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
 

带条件的过滤

even_numbers = [x for x in range(20) if x % 2 == 0]  
# 输出:[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
 

包含多个循环的列表推导式

list1 = [1,2,3,4,5]
list2 = ['a','b','c','d','e']
list3 = [(i,j) for i in list1 for j in list2]
[(1, 'a'), (1, 'b'), (1, 'c'), (1, 'd'), (1, 'e'),
 (2, 'a'), (2, 'b'), (2, 'c'), (2, 'd'), (2, 'e'),
 (3, 'a'), (3, 'b'), (3, 'c'), (3, 'd'), (3, 'e'),
 (4, 'a'), (4, 'b'), (4, 'c'), (4, 'd'), (4, 'e'),
 (5, 'a'), (5, 'b'), (5, 'c'), (5, 'd'), (5, 'e')]
 

13.zip函数

names = ["Alice", "Bob", "Charlie"]
ages = [25, 30, 35]
paired = zip(names, ages)
print(list(paired))  # 输出: [('Alice', 25), ('Bob', 30), ('Charlie', 35)]
 

14.常用函数

常用列表函数整理(现用现查)

函数/方法描述示例
append(x)在列表末尾添加元素xlst.append(1)
extend(iterable)将可迭代对象的所有元素添加到列表末尾lst.extend([2, 3])
insert(i, x)在索引i处插入元素xlst.insert(0, 'a')
remove(x)删除列表中第一个值为x的元素lst.remove('a')
pop([i])删除并返回索引i处的元素(默认最后一个)lst.pop()
clear()删除列表中的所有元素lst.clear()
index(x)返回第一个值为x的元素的索引lst.index(2)
count(x)返回x在列表中出现的次数lst.count(1)
sort()对列表进行排序lst.sort()
reverse()反转列表中的元素顺序lst.reverse()
copy()返回列表的浅拷贝new_lst = lst.copy()
len()返回列表的长度len(lst)
max()返回列表中的最大值max(lst)
min()返回列表中的最小值min(lst)
sum()返回列表中所有元素的和(仅限数值列表)sum(lst)
sorted()返回排序后的新列表(不修改原列表)sorted(lst)
reversed()返回反向迭代器(不修改原列表)list(reversed(lst))
enumerate()返回枚举对象(包含索引和值的元组)list(enumerate(lst))
zip()将多个列表的元素配对为元组list(zip(lst1, lst2))
filter()根据函数过滤列表元素list(filter(lambda x: x > 0, lst))
map()对列表的每个元素应用函数list(map(str, lst))
any()检查列表中是否有任一元素为Trueany(lst)
all()检查列表中所有元素是否都为Trueall(lst)
slice()返回切片对象,用于列表切片lst[slice(1, 3)]

注意事项

  • 表中列出的函数和方法适用于Python的列表(list)类型。
  • 部分函数(如len、max、min等)是内置函数,可直接使用。
  • 部分方法(如sort、reverse等)会直接修改原列表。
  • 使用filter和map时,通常需要结合lambda表达式或自定义函数。

浅拷贝copy方法:

copy方法用于创建对象的浅拷贝。浅拷贝意味着新对象是原对象的一个副本,但只复制了最外层的对象,内部嵌套的对象仍然是引用。浅拷贝会创建一个新对象,其内容是原对象中元素的引用。对于可变对象(如列表、字典),修改新对象的嵌套元素会影响原对象。

import copy

original_list = [1, 2, [3, 4]]
shallow_copied_list = copy.copy(original_list)

# 修改浅拷贝列表的顶层元素
shallow_copied_list[0] = 100
print(original_list)  # 输出: [1, 2, [3, 4]]

# 修改浅拷贝列表的嵌套元素
shallow_copied_list[2][0] = 300
print(original_list)  # 输出: [1, 2, [300, 4]]
 

更多推荐