面向对象语言(Python)——三大循坏、四种推导式、三个内置函数


人生苦又短,而我学Python

三大条件语句,四种推导式


——Lungcen 

目录

思维导图

 

条件语句

 if else分支语句的三种形式

判断表达式是否成立

if else对缩进的要求

if语句嵌套

pass语句及其作用

assert断言函数及用法

while循环语句

for循环及用法详解

循环结构中else用法

循环嵌套及用法

嵌套循环实现冒泡排序

 强制离开当前循环体的办法

break 语句

continue 语句

推导式详解

列表推导式

 普通的for循坏

带有判断语句 

双层for循环

元组推导式

使用 tuple() 函数,可以直接将生成器对象转换成元组

直接使用 for 循环遍历生成器对象,可以获得各个元素

使用 __next__() 方法遍历生成器对象,也可以获得各个元素

字典推导式

交换现有字典中各键值对的键和值

集合推导式

Python内置函数

zip函数及用法

reversed函数及用法

sorted函数及用法



思维导图


 


条件语句


python语言同C语言、Java语言一样都存在执行的顺序,例如:先执行第1条语句,然后是第2条、第3条……一直到最后一条语句,这称为顺序结构

对条件进行判断,然后根据不同的结果执行不同的代码,这称为选择结构或者分支结构

 if else分支语句的三种形式

if 语句

if else 语句

 if elif else 语句

if、elif、else 语句的最后都有冒号:,不要忘记

判断表达式是否成立

布尔类型(bool)只有两个值,分别是 True 和 False,Python 会把 True 当做“真”,把 False 当做 “假”。

对于数字,Python 会把 0 和 0.0 当做“假”,把其它值当做“真”。

对于其它类型,当对象为空或者为 None 时,Python 会把它们当做“假”,其它情况当做真。

例如:"" 空字符串

           [ ] 空列表

           ( ) 空元组

           { } 空字典

           None 空值        这些表达式是不成立,会当作”假“

if else对缩进的要求

Python是以缩进来标记代码块的,代码块一定要有缩进,没有缩进的不是代码块。另外,同一个代码块的缩进量要相同,缩进量不同的不属于同一个代码块。

缩进多少合适?按照习惯一般建议缩进 1 个 Tab 键的位置又或者缩进 4 个空格

不需要使用代码块的地方千万不要缩进,一旦缩进就会产生一个代码块

if语句嵌套

if 表达式 1:
    if 表示式 2:
        代码块 1
    else:
        代码块 2
if 表达式 1:
    if 表示式 2:
        代码块 1
    else:
        代码块 2
else:
    if 表达式3:
        代码块3
    else:
        代码块4

pass语句及其作用

在实际开发中,有时候我们会先搭建起程序的整体逻辑结构,但是暂时不去实现某些细节,而是在 这些地方加一些注释,方面以后再添加代码

在Python 提供了一种更加专业的做法,就是空语句pass。pass 是 Python 中的关键字,用来 让解释器跳过此处,什么都不做

age = int( input("请输入你的年龄:") )

if age < 12 :
    print("婴幼儿")
elif 12 <= age < 18:
    print("青少年")
elif 18 <= age < 30:
    print("成年人")
elif 30 <= age < 50:
    pass
else:
    print("老年人")

assert断言函数及用法

assert 语句,又称断言语句,可以看做是功能缩小版的 if 语句,它用于判断某个表达式的 值,如果值为真,则程序可以继续往下执行;反之,Python 解释器会报 AssertionError 错误

# 输入数学成绩,判断成绩是否合法
mathMark = float(input("请输入数学成绩:"))
# 断言数学考试分数是否位于正常范围内
assert 0 <= mathMark <= 100
# 只有当 mathMark 位于 [0,100]范围内,程序才会继续执行
print("数学成绩为:", mathMark)

明明 assert 会令程序崩溃,为什么还要使用它呢?

这是因为,与其让程序在晚些时候崩溃,不如在错误条件出现时,就直接让程序崩溃,这有利于我们对程序排错,提高程序的健壮性。

因此,assert 语句通常用于检查用户的输入是否符合规定,还经常用作程序初期测试和调试过程中的辅助工具。

while循环语句

while 语句执行的具体流程为:

首先判断条件表达式的值,其值为真(True)时,则执行代码块中 的语句,

当执行完毕后,再回过头来重新判断条件表达式的值是否为真,

若仍为真,则继续重新执行代 码块...如此循环,

直到条件表达式的值为假(False),才终止循环。

使用 while 循环时,一定要保证循环条件有变成假的时候,否则这个循环将成为一个死循 环。所谓死循环,指的是无法结束循环的循环结构

for循环及用法详解

1、for 循环进行数值循环

# 实现从 1 到 100 的累加
sum = 0
# range() 函数,此函数是 Python 内置函数,用于生成一系列连续整数
for i in range(101):
    sum += i
print(sum)

2、for循环遍历列表和元组

# 定义列表
lt = ["Hello", "Java", "Python", "C", "C++", [12, 23]]
# 使用for循环遍历列表
for ls in lt:
    print(ls, end=", ")

3、for 循环遍历字典

# 定义字典
dt = {
'Java': '因互联网而火',
'Python': '因人工智能而火',
'PHP': 'web之王'
}
# 遍历字典keys
for key in dt.keys():
    print(key, end=" ")
print()
# 遍历字典values
for value in dt.values():
    print(value, end=" ")
print()
# 遍历字典items
for item in dt.items():
    print(item, end=" ")
print()
# 直接遍历字典
for d in dt:
    print(d, end=" ")

循环结构中else用法

无论是 while 循环还是 for 循环,其后都可以紧跟着一个 else 代码块,它的作用是当循环条件为 False 跳出循环时,程序会最先执行 else 代码块中的代码(但是其实加不加else都不影响)

但是如果使用break 跳出当前循环体之后,该循环后的 else 代码块也不会被执行。

循环嵌套及用法

当 2 个(甚至多个)循环结构相互嵌套时,位于外层的循环结构常简称为外层循环或外循环,位于内层的循环结构常简称为内层循环或内循环。

循环嵌套结构的代码,Python 解释器执行的流程为:

1、当外层循环条件为 True 时,则执行外层循环结构中的循环体

2、外层循环体中包含了普通程序和内循环,当内层循环的循环条件为 True 时会执行此循环 中的循环体,直到内层循环条件为 False,跳出内循环

3、如果此时外层循环的条件仍为 True,则返回第 2 步,继续执行外层循环体,直到外层循环 的循环条件为 False

4、当内层循环的循环条件为 False,且外层循环的循环条件也为 False,则整个嵌套循环才算 执行完毕

        嵌套循环执行的总次数 = 外循环执行次数 * 内循环执行次数

嵌套循环实现冒泡排序

冒泡排序算法的实现思想遵循以下几步:

1、比较相邻的元素,如果第一个比第二个大,就交换它们两个

2、从最开始的第一对到结尾的最后一对,对每一对相邻元素做步骤 1 所描述的比较工作,并 将最大的元素放在后面。这样当从最开始的第一对到结尾的最后一对都执行完后,整个序列中的最后一个元素便是最大的数。

3、将循环缩短,除去最后一个数(因为最后一个已经是最大的了),再重复步骤 2 的操作, 得到倒数第二大的数。

4、持续做步骤 3 的操作,每次将循环缩短一位,并得到本次循环中的最大数。直到循环个数 缩短为 1,即没有任何一对数字需 要比较,此时便得到了一个从小到大排序的序列。

lt = [5, 8, 4, 1]
# 使用冒泡排序将列表进行排序
# 外层循环控制比较回合
for i in range(len(lt) - 1):
    # 内层循环控制每回合比较的次数
    for j in range(len(lt) - 1 - i):
        # 如果前一个元素大于后一个元素,则交换位置
        if lt[j] > lt[j+1]:
            lt[j], lt[j+1] = lt[j+1], lt[j]
print(lt)

 lt[j], lt[j+1] = lt[j+1], lt[j]

这个就可以当成一个赋值语句

 强制离开当前循环体的办法

break 语句

1、break 语句可以立即终止当前循环的执行,跳出当前所在的循环结构。无论是 while 循环还是 for 循环,只要执行 break 语句,就会直接结束当前正在执行的循环体。

2、break 跳出当前循环体之后,该循环后的 else 代码块也不会被执行。

3、break 语句只会终止所在循环体的执行,而不会作用于所有的循 环

continue 语句

只会终止执行本次循环中剩下的代码,直接从下一次循环继续执行


推导式详解


推导式(又称解析器),是 Python 独有的一种特性。使用推导式可以快速生成列表、元组、字典 以及集合类型的数据,因此推导式又可细分为列表推导式、元组推导式、字典推导式以及集合推导式。

列表推导式

[表达式 for 迭代变量 in 可迭代对象 [if 条件表达式] ]

[if 条件表达式] 不是必须的

列表推导式可以利用 range 区间、元组、列表、字典和集合等数据类型,快速生成一个满足指定需求的列表

 普通的for循坏

for i in range(10):
    print(i ** 2, end=" ")
print()

list1 = [i ** 2 for i in range(10)]
print(list1)

带有判断语句 

for i in range(10):
    if i % 2 == 0:
        print(i, end=" ")
print()

list1 = [i for i in range(10) if i % 2 == 0]
print(list1)

双层for循环

d_list = []
for x in range(3):
    for y in range(4):
        d_list.append((x, y))
print(d_list)

list1 = [(x, y) for x in range(3) for y in range(4)]
print(list1)

元组推导式

(表达式 for 迭代变量 in 可迭代对象 [if 条件表达式] )

元组推导式可以利用 range 区间、元组、列表、字典和集合等数据类型,快速生成一个满足指定需 求的元组

# 利用元组推导式生成元组
dt = (x for x in range(1, 10))
print(dt)
# 元组推导式生成的结果并不是一个元组,而是一个生成器对象,这一点和列表推导式是不同的

元组推导式生成的结果并不是一个元组,而是一个生成器对象, 这一点和列表推导式是不同的 

使用 tuple() 函数,可以直接将生成器对象转换成元组

# 利用元组推导式生成元组
dt = (x for x in range(1, 10))
print(tuple(dt))

直接使用 for 循环遍历生成器对象,可以获得各个元素

# 利用元组推导式生成元组
dt = (x for x in range(1, 10))
for i in dt:
    print(i, end=" ")

使用 __next__() 方法遍历生成器对象,也可以获得各个元素

# 利用元组推导式生成元组
dt = (x for x in range(1, 10))
for i in range(9):
    print(dt.__next__(), end=" ")

无论是使用 for 循环遍历生成器对象,还是使用 __next__() 方法遍历生成器对象,遍历后原生成器对象将不复存在,这就是遍历后转换原生成器对象却得到空元组的原因

字典推导式

{表达式 for 迭代变量 in 可迭代对象 [if 条件表达式]}

Python 中,使用字典推导式可以借助列表、元组、字典、集合以及 range 区间,快速生成符合需求的字典

交换现有字典中各键值对的键和值

listDemo = {'Lungcen', 'www.baidu.com'}
# 将列表中各字符串值为键,各字符串的长度为值,组成键值对
newDict = {key: len(key) for key in listDemo}
print(newDict)

# 交换字典的k和v
dt = {v: k for k, v in newDict.items()}
print(dt)

集合推导式

Python中,使用集合推导式可以借助列表、元组、字典、集合以及 range 区间,快速生成符合需求的集合

集合推导式和字典推导式的格式完全相同,那么给定一个类似的推导式,如何判 断是哪种推导式呢?最简单直接的方式,就是根据表达式进行判断,如果表达式以键值对(key: value)的形式,则证明此推导式是字典推导式;反之,则是集合推导式


Python内置函数


zip函数及用法

zip() 函数是 Python内置函数之一,它可以将多个序列(列表、元组、字典、集合、字符串以及 range() 区间构成的列表)“压缩”成一个 zip 对象。所谓“压缩”,其实就是将这些序列中对应位置的元素 重新组合,生成一个个新的元组。

zip() 函数“压缩”多个序列时,它会分别取 各序列中第 1 个元素、第 2 个元素、... 第 n 个元素,各自组成新的元组。需要注意的是,当多个序列 中元素个数不一致时,会以最短的序列为准进行压缩。

reversed函数及用法

reserved() 是 Python 内置函数之一,其功能是对于给定的序列(包括列表、元组、字符串以及 range(n) 区间),该函数可以返回一个逆序序列的迭代器(用于遍历该逆序序列)

使用 reversed() 函数进行逆序操作,并不会修改原来序列中元素的顺序

sorted函数及用法

sorted() 作为 Python内置函数之一,其功能是对序列(列表、元组、字典、集合、还包括字符 串)进行排序

list = sorted(iterable, key=None, reverse=False)

 其中,iterable 表示指定的序列,key 参数可以自定义排序规则;

key 参数和 reverse 参数是可选参数,即可以使用,也可以忽略。

reverse 参数指定以升序 (False,默认)还是降序(True)进行排序。

sorted() 函数会返回一个排好序的列表。

lt1 = [5, 3, 4, 2, 1]
print(sorted(lt1))  # 默认升序排序
print(sorted(lt1, reverse=True))  # 降序排序

tup = (5, 4, 3, 1, 2)
print(sorted(tup))  # 对元组进行排序
print(sorted(tup, reverse=True))  # 降序排序

dic = {4: 1, 5: 2, 3: 3, 2: 6, 1: 8}
print(sorted(dic.items()))  # 字典默认按照key进行排序
print(sorted(dic, reverse=True))  # 降序排序

st = {1, 5, 3, 2, 4}
print(sorted(st))  # 对集合进行排序
print(sorted(st, reverse=True))  # 降序排序

str1 = "51423"
print(sorted(str1))  # 对字符串进行排序
print(sorted(str1, reverse=True))  # 降序排序

人生苦又短,而我学Python

三大条件语句,四种推导式


——Lungcen 

猜你喜欢

转载自blog.csdn.net/qq_64552181/article/details/129823232