专业编程基础技术教程

网站首页 > 基础教程 正文

python实现序列代码多?这个语法可以写出简洁优雅的代码,值得一试

ccvgpt 2024-11-27 12:05:23 基础教程 1 ℃

序列是python中最基本的数据结构。所谓的序列,指的是可以连续存放多个值的内存空间,序列中的每个元素都会有一个数字,即它的位置或索引。通过这个索引就能找到序列中的元素 。

在python的序列中,包括列表,字符串,元组,集合和字典。这些数据类型都可以使用for循环实现,但是,我们可以使用推导式可以写出更简洁的代码 。

python实现序列代码多?这个语法可以写出简洁优雅的代码,值得一试

推导式即comprehensions,推导式是可以将一个序列构建成另外一个寻序列的表达式结构体 。python共支持三种推导式。

列表(list)推导式

列表推导式是快速生成列表的一种方法,推导式主要的语法格式是在for后面跟一个表达式,此表达式一般是for或if语句。返回结果是一个根据表达式运算后生成出来的新列表 。

语法格式为:

[ expB for x in iterable expA ]

该列表里的内容主要由三部分组成,分别是中间的循环体,循环体后的表达式,循环体前的对x运算的表达式

  • for x in iterable : 循环的是一个可迭代对象,包括字典,元组,字符串以及range()方法。for循环体是最先被执行的。
  • expA:主要是由if语句或for语句构成,如果是if语句,一般是将x进行条件筛选,符合条件的传给expB参与运算,如果是for循环,那就是双层嵌套循环,这里需要注意的是,后面的for是内层循环 。当然该表达式也可以不写 。
  • expB:主要是对for循环中的x进行的最后的运算,可以是+,-,*,%,|,条件判断以及各种方法等 。

实例

语法:
	[ expB for x in iterable expA ]
实例
    lst1 = [x for x in range(0,10) ]			#1.for循环后无表达式
    lst2 = [x for x in range(0,10) if x % 2 == 0]	#2.for循环后if条件表达式
    lst3 = [x*2+1 for x in range(0,10) if x % 2 == 0]		#3.返回的值参与计算
    lst4 = [y+str(x) for x in range(1,3) for y in ['x','y','z']]	#4.嵌套循环
    print("生成0~9的列表:",lst1)
    print("对0~9的数对2取余返回新列表:",lst2)
    print("对0~9的数对2取余后再参与计算:",lst3)
    print("嵌套循环生成的数相连接:",lst4)
结果:
	生成0~9的列表: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
	对0~9的数对2取余返回新列表: [0, 2, 4, 6, 8]
	对0~9的数对2取余后再参与计算: [1, 5, 9, 13, 17]
	嵌套循环生成的数相连接: ['x1', 'y1', 'z1', 'x2', 'y2', 'z2']
说明:
	对列表推导式常使用的几种用法
    用法1:[x for x in iterable ]					#循环后直接打印
    用法2:[x for x in iterable if condition(x) ]	#对x的条件判断
    用法3:[operator(x) for x iterable if condition(x)]  #对x条件判断后,再对x进行运算
    用法4: [operator(x,y) for x in iterable for y in iterable1] #嵌套循环,对x,y进行运算

字典(dict)推导式

字典推导式和列表推导式的使用方法是类似的,只不过是在{}内实现以上的语法。

语法:
    {key:val for k,v in d.items() 条件或循环表达式 }
实例:
    d = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
    d_new = {k:v+5 for k,v in d.items() if v <= 3}
    print("输出字典中的value<=3的所有键值对:",d_new)
输出
    {'a': 6, 'b': 7, 'c': 8}
说明:
    for循环后的表达式可以是条件表达式或者循环表达式,主要是进行筛选或嵌套循环
    返回结果是一个根据表达式运算后生成出来的新字典 。

集合(set)推导式

集合(set)是一个无序的不重复元素的序列,集合中的元素都是唯一的,各不相同的元素。

从语法格式上来看,set的创建和字典一样,都是将元素放在一对大括号{}内,相邻元素之间用逗号(,)分隔 。主要注意的是:创建一个空集合必须使用set()而不是{},因为{}是用来创建一个空字典。

集合推导式和上面格式差不多,

语法:
    {expB for x in iterable expA }
实例
    s = {x**2 for x in [1, 2, 3]}
    print("集合s:",s)
输出: 
    集合s: {1, 4, 9}

Tags:

最近发表
标签列表