if else 条件语句
if 一般用来作为条件判断,类似中文的如果, else可以理解为否则
可以有if 没有else
如果有else的话 必须有if
if elif else条件语句
● 从上往下判断
● 只要有一个条件满足,执行这个条件下的语句,其它条件不再判断执行
if else 三目运算符
例子 a if a >b else b
意思是如果a大于b 则输出a 否则就输出b
通常我们在代码里面可以在赋值的时候或者很多地方可以使用三目运算符去简化我们的代码
这是一些三目运算符的示例代码
new_month = str(leave_date.month) if len(str(leave_date.month)) == 2 else "0" + str(leave_date.month)
new_leave = (str(leave_date.year - 1) if new_month == "01" else str(
leave_date.year)) + "-" + ("12" if new_month == "01" else str(leave_date.month - 1))
if 嵌套
通常是一个If嵌套着另一个If ,一般是最外层的if 条件满足,就会进到内层的第二个if
循环
while 循环
while 循环,必须要有条件终止循环,否则就是一个死循环,会无限循环下去
while True: 永远为真,永远进入死循环
for 循环
for循环,一般是循环可迭代对象,比如列表,元祖,字典的keys,values,或者items,获取元组列表的索引跟元素值,enumerate(iterable),还有循环range(0, 100), 左闭右开,就是循环0-99个的数字
continue是跳过本次循环,中途休息1场,本次循环不执行,下次继续,比如你循环[1,2,3,4]这个列表,你循环到3的时候不想做逻辑处理,想跳过,就直接continue,那么他直接就会循环4
break 是终止本次循环, 不再执行循环体中后续重复的代码
循环嵌套
for循环可嵌套
while 循环可嵌套
注意点:
1.for 循环嵌套,他是先循环外面的循环一次,在把内层的循环跑完
```python
for i in range(0, 2):
for j in range(3, 5):
print(i, j)
# 这里打印出来的结果是
0 3
0 4
1 3
1 4
而不是0 3, 1, 3 , 0 4 , 1 4
- map、filter以及列表推导式都是用于处理可迭代对象(例如列表、元组、集合等)的工具,它们能够提供简洁而高效的方式来进行转换、过滤等操作。
map函数: map函数用于对可迭代对象的每个元素应用一个函数,返回一个新的可迭代对象。语法如下:
python
result = map(function, iterable)
其中,function是应用到每个元素的函数,iterable是要处理的可迭代对象。
示例:将列表中的每个元素都平方
numbers = [1, 2, 3, 4, 5]
squared_numbers = list(map(lambda x: x**2, numbers))
filter函数: filter函数用于筛选可迭代对象中符合条件的元素,返回一个新的可迭代对象。语法如下:
result = filter(function, iterable)
其中,function是用于筛选的函数,iterable是要处理的可迭代对象。
示例:筛选列表中的偶数
numbers = [1, 2, 3, 4, 5]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
列表推导式: 列表推导式是一种紧凑的语法,用于根据现有可迭代对象创建新的列表。语法如下:
python
new_list = [expression for item in iterable if condition]
其中,expression是一个表达式,item是可迭代对象中的元素,condition是一个可选的条件。
示例:创建一个平方数列表
numbers = [1, 2, 3, 4, 5]
squared_numbers = [x**2 for x in numbers]
- for 循环在处理大量数据的时候,要避免在内层做太多计算,否则会影响性能
- 列表推导式, 可以帮我们快速创建一个列表
比如创建一个1-99的偶数列表
[i for i in range(0, 100) if i % 2 == 0]
5.使用生成器表达式
生成器表达式是一种用于创建生成器(generator)的简洁语法。生成器是一种特殊的迭代器,它允许按需产生值,而不是一次性生成所有值,从而在处理大量数据时能够节省内存。
生成器表达式的语法与列表推导式类似,但使用圆括号而不是方括号。其基本结构如下:
generator_expression = (expression for item in iterable if condition)
其中,expression是生成器要生成的值的表达式,item是来自可迭代对象的每个元素,condition是一个可选的条件。
下面是一个简单的例子,比较了列表推导式和生成器表达式:
列表推导式
list_comprehension = [x**2 for x in range(10)]
生成器表达式
generator_expression = (x**2 for x in range(10))
主要区别在于,列表推导式使用方括号,一次性创建并返回一个列表,而生成器表达式使用圆括号,创建一个生成器对象,它按需生成每个元素。生成器表达式在语法上更为简洁,而且对于大数据集更加高效,因为它不会一次性占用大量内存。
# 使用列表推导式
result = [x**2 for x in range(10)]
print(result) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] 一次性生成所有元素
# 使用生成器表达式
result1 = (x**2 for x in range(10))
for i in result1:
print(i) # 0 1 4 9 16 25 36 49 64 81 用的时候才是一个个元素
print(result1) # <generator object <genexpr> at 0x000001A9389FA040> 直接是一个生成器对象