tws mirror gitee ssm email pointers curl jdbc browser admin框架 河南普通话报名 android经典项目开发实战 datetimepicker赋值 hadoop创建文件夹 matlab生成对角矩阵 arraylist删除指定元素 string转16进制 kafka学习 ubuntu更改文件夹权限 linux查看jdk安装路径 mysql卸载工具 vue与html5 mysql时间戳转时间 mysql学习 python手册 java中tostring java运算 linux命令详解词典 java疯狂讲义 renderpartial 文件批量更名 su镜像 苹果手机怎么滚动截屏 浏览器安卓 java大数据语言 regedit打不开 sql列转行 cad周长快捷键 js观察者模式 思源字体包 图片格式太大怎么变小
当前位置: 首页 > 学习教程  > python

Python学习笔记(六)

2021/2/8 10:44:06 文章标签: 测试文章如有侵权请发送至邮箱809451989@qq.com投诉后文章立即删除

Python学习笔记(六) 流程控制及相关函数Python学习笔记(六)一. range() 函数二. 列表推导式for表达式三. 内置函数zip函数reversed函数sorted函数四.break和continue用法breakcontinue一. range() 函数 range(stop) range(start,…

Python学习笔记(六)

流程控制及相关函数

  • Python学习笔记(六)
  • 一. range() 函数
  • 二. 列表推导式
    • for表达式
  • 三. 内置函数
    • zip函数
    • reversed函数
    • sorted函数
  • 四.break和continue用法
    • break
    • continue

一. range() 函数

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

start: 计数从 start 开始。默认是从 0 开始
stop: 计数到 stop 结束,不包括 stop
step:步长,默认为1

range() 函数的返回值类型为 range,而不是 list
要得到用 range() 函数创建的数字列表,需要list() 函数
list(range(1,6))

使用 range() 函数时,可以指定步长,即便 range() 第二个参数恰好符合条件,最终创建的数字列表中也不会包含它
range(2,11,2) # 1~10 内的偶数
range() 函数常常和循环结构、推导式一起使用,几乎能够创建任何需要的数字列表

二. 列表推导式

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

for表达式

语法格式:
[表达式 for 迭代变量 in 可迭代对象 [if 条件表达式] ]
[if 条件表达式] 不是必须的

表达式就是 for 循环中的循环体:

for 迭代变量 in 可迭代对象
    表达式
    
列表推导式最终会将循环过程中计算表达式得到的值组成一个列表
>>>a_range = range(10)
>>>a_list = [x * x for x in a_range] # 对a_range执行for表达式
>>>print(a_list) 
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
>>>a_range = range(10)
>>>a_list = [x * x for x in a_range if x % 2 == 0] #增加if判断,推导式只处理 range 区间的偶数
>>>print(a_list)
[0, 4, 16, 36, 64]
>>>a_list = [(x, y) for x in range(3) for y in range(3)] #列表推导式的多循环
>>>print(a_list)
[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]

上述for表达式相当于for循环嵌套:

a_list = []
for x in range(3):
    for y in range(3):
        a_list.append((x, y))
包含多个循环的 for 表达式,同样可指定 if 条件

三. 内置函数

zip函数

将多个序列(列表、元组、字典、集合、字符串以及 range() 区间构成的列表)变成一个 zip 对象

将这些序列中对应位置的元素重新组合,生成新的元组

zip(iterable, ...)
iterable,... 表示多个列表、元组、字典、集合、字符串,range() 区间
>>>a_list = [1,2,3]
>>>a_tuple = (4,5,6)
>>>print([x for x in zip(a_list,a_tuple)])
[(1, 4), (2, 5), (3, 6)]
>>>a_dict = {2:2,3:3,4:4}
>>>b_dict = {5:5,6:6,7:7,8:8}
>>>print([x for x in zip(a_dict,b_dict)])
[(2, 8), (3, 5), (4, 6)]
使用zip()函数时,会分别取各序列中第1个元素、第2个元素到第n个元素,各自组成新的元组,字典取key

当多个序列中元素个数不一致时,会以最短的序列为准进行压缩
zip()函数返回的 zip 对象可以通过调用list()函数将zip()对象转换成列表

>>>print(type(zip(a_list,a_tuple)))
<class 'zip'>

>>>print(type(list(zip(a_list,a_tuple))))
<class 'list'>

reversed函数

对于给定的序列(包括列表、元组、字符串以及 range() 区间)返回逆序序列的迭代器,用于遍历该逆序序列

reversed(seq)
seq 可以是列表,元素,字符串以及 range() 生成的区间列表

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

>>>print([x for x in reversed([1,2,3,4,5])]) #将列表进行逆序
[5, 4, 3, 2, 1]
使用list()函数,将 reversed() 函数逆序返回的迭代器,直接转换成列表
>>>print(type(list(reversed([1,2,3,4,5]))))
<class 'list'>

>>>print(type(reversed([1,2,3,4,5])))
<class 'list_reverseiterator'>

sorted函数

对序列(列表、元组、字典、集合、还包括字符串)进行排序

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

iterable 表示指定的序列
key 自定义排序规则
reverse 指定升序(False,默认)降序(True)进行排序

key 参数和 reverse 参数是可选参数

sorted()函数对序列进行排序,不会修改原来序列中元素的顺序,而是重新生成一个列表
>>>a_list = [1,2,3,4,5,6]
>>>print(sorted(a_list))
[1, 2, 3, 4, 5, 6]

>>>a_dict = {1:5,2:4,3:3,4:2,5:1}
>>>print(sorted(a_dict.items())) #字典默认按照key进行排序
[(1, 5), (2, 4), (3, 3), (4, 2), (5, 1)]

dict.items()函数以列表返回可遍历的(key, valu) 元组数组
默认对序列中元素进行升序排序,可手动将reverse参数值改为True,实现降序排序

sorted(a_list,reverse=True)

调用sorted()函数时,可加入key参数来接受一个函数,指定 sorted() 函数按照什么标准进行排序

sorted(a_list,key=lambda x:len(x)) ##使用lambda表示式自定义按照字符串长度排序

lambda表达式(匿名函数),常用来表示内部仅包含 1 行表达式的函数

四.break和continue用法

在执行 while 循环或者 for 循环时,如果希望在循环结束前就强制结束循环,可以使用Python提供的强制离开当前循环体的办法:breakcontinue

break

break 语句
完全终止当前循环,跳出当前所在的循环结构
break语句一般结合if语句进行搭配使用,表示在某种条件下跳出循环体

name = "youchanwill"
for i in name:
    if i == 'y' :
        break      #终止循环
    print(i,end="")
else:
    print("执行else语句")
print("跳出循环体")

使用 break 跳出当前循环体之后,该循环后的 else 代码块也不会被执行
对于嵌套循环结构,break语句只会终止所在循环体的执行,而不会作用于所有的循环体

name = "youchanwill"
for i in range(3):
    for j in name:
        if j == 'y':
            break   
        print(j,end="")
    print("跳出内循环")
跳出内循环
跳出内循环
跳出内循环

每当执行内层循环时,只要循环至执行 break 语句,会立即停止执行当前所在的内存循环体,继续执行外层循环
在嵌套循环结构中使用break同时跳出内层循环和外层循环(支持跳出多层嵌套循环)

name = "youchanwill"
flag = False  #定义一个bool变量
for i in range(3):
    for j in name:
        if j == 'y':
            flag = True  #在break前,修改bool变量
            break   
        print(j,end="")
    print("\n跳出内循环")
    if flag == True:
        print("跳出外层循环")
        break    #在外层循环体中使用 break
跳出内循环
跳出外层循环

通过bool类型的变量,在跳出内循环时更改值,在外层循环体中,判断值是否发生变化,如有变化,则再次执行 break 跳出外层循环

continue

continue 语句
跳过执行本次循环体中剩余的代码,转而执行下一次的循环
name = "youchanwill"
for i in range(3):
    for j in name:
        if j == 'y':
        	print('')
            continue   
        print(j,end="")
ouchanwill
ouchanwill
ouchanwill

continue语句和break语句一样,只需在whilefor语句中的相应位置加入


本文链接: http://www.dtmao.cc/news_show_2000294.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?