列表生成式&三元表达式

列表生成式: 用于生成一个新的列表,是Python内置的一种极其强大的生成list的表达式。一、语法格式:[exp for iter_var in iterable]

工作过程:

(1)迭代iterable中的每个元素;

(2)每次迭代都先把结果赋值给iter_var,然后通过exp得到一个新的计算值;

(3)最后把所有通过exp得到的计算值以一个新列表的形式返回。

例如:

L=[i for i in range(10)]
print(L)#[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

R=[]
for a in range(10):
    R.append(a)
print(R)#[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

二、嵌套if语句:[exp for iter_var in iterable if_exp]

工作过程:

(1)迭代iterable中的每个元素,每次迭代都先判断if_exp表达式结果为真,如果为真则进行下一步,如果为假则进行下一次迭代;

(2)把迭代结果赋值给iter_var,然后通过exp得到一个新的计算值;

(3)最后把所有通过exp得到的计算值以一个新列表的形式返回。

res=[x for x in range(1,10) if x%2==0]
print(res)#[2, 4, 6, 8]
res=[x*x for x in range(1,10) if x%2==0]
print(res)#[4, 16, 36, 64]

三、循环嵌套语法格式:[exp for iter_var_A in iterable_A for iter_var_B in iterable_B]

工作过程:每迭代iterable_A中的一个元素,就把ierable_B中的所有元素都迭代一遍。

res= [(x, y) for x in range(3) for y in range(4)]
print(res)#[(0, 0), (0, 1), (0, 2), (0, 3), (1, 0), (1, 1), (1, 2), (1, 3), (2, 0), (2, 1), (2, 2), (2, 3)]
res=[ x+y for x in range(3) for y in range(4)]
print(res)#[0, 1, 2, 3, 1, 2, 3, 4, 2, 3, 4, 5]

四、循环嵌套加判断

res=[m + n for m in range(1,10) for n in range(1,5) if m%2==0]
print(res)#[3, 4, 5, 6, 5, 6, 7, 8, 7, 8, 9, 10, 9, 10, 11, 12]

备注:[]与()的区别

l1 = [ i  for i in range(1,20,2) ]  #生成100以内的奇数,以空间换时间
print(l1)  #[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
l2 = ( i  for i in range(1,20,2) )  #生成100以内的奇数 #
print(l2)  #<generator object <genexpr> at 0x0000000002255410>

 #外面是小括号的话,它就不是一个list了,它是一个生成器,
 #生成器比list要节省内存,它是每次循环的时候,会根据规则计算一个元素,放到内存里面
 #list它是把所有的元素都放在内存里面的

小练习:

#res = [‘HWt‘ , ‘Python‘ ,456, ‘Random‘ , ‘BEST‘ , 123] ,将list中得大写字符转为小写:
res = [‘HWt‘ , ‘Python‘ ,456, ‘Random‘ , ‘BEST‘ , 123]
print([s.lower() if isinstance(s , str) else s for s in res ]  )#[‘hwt‘, ‘python‘, 456, ‘random‘, ‘best‘, 123]

三元表达式:if...else 三元表达式: 可以简化分支判断语句,如 x = y.lower() if isinstance(y, str) else y

# c = a if a > b else b  # 如果a大于b的话,c=a,否则c = b ,如果不用三元运算符的话,就得下面这么写
if a > b:
    c = a
else:
    c = b

c = a if a > b else b  #三元表达式

Python之列表生成式、生成器、可迭代对象与迭代器:https://www.cnblogs.com/yyds/p/6281453.html

 

原文地址:https://www.cnblogs.com/hwtfamily/p/8981532.html

时间: 2024-10-12 04:48:17

列表生成式&三元表达式的相关文章

python_day04 函数嵌套 名称空间和作用域 闭包 装饰器 迭代器 生成器 列表解析 三元表达式 生成器表达式

本节课重要知识点内容如下: 函数嵌套 名称空间和作用域 闭包 装饰器 迭代器 生成器 列表解析 三元表达式 生成器表达式 1.函数嵌套 函数的嵌套调用:在调用一个函数的过程中,又调用了其他函数函数的嵌套定义:在一个函数的内部,又定义另外一个函数 def bar(): print('from nbar')def foo(): print('from foo') bar()foo()def max2(x,y): if x > y: return x else: return ydef max4(a,

函数---迭代器&amp;生成器&amp;列表解析&amp;三元表达式

可迭代对象:obj.__iter__ 迭代器:iter1=obj.__iter() 1iter1.__next__ 2iter2.__next__ 迭代器: 优点:不依赖索引 惰性计算,节省内存 缺点: 不如按照索引的取值方便 一次性,只能往后取,不能回退 迭代器的应用: 提供了一种不依赖索引的统一的迭代方法 惰性计算,比如取文件的每一行 判断可是否是可迭代对象和迭代器 from collections import Iterable, Iterator # 导入模块功能 isinstance(

列表生成式&amp;生成器表达式

一.列表生成式 def func(): return [lambda x:i*x for i in range(4)] print([j(2) for j in func()]) 结果:[6,6,6,6] 二.生成器表达式 def func(): return (lambda x:i*x for i in range(4)) print([j(2) for j in func()]) 结果:[0,2,4,6] 原文地址:https://www.cnblogs.com/gpd-Amos/p/899

Python开发基础-Day9-生成器、三元表达式、列表生成式、生成器表达式

生成器 生成器函数:函数体内包含有yield关键字,该函数执行的结果是生成器,生成器在本质上就是迭代器. def foo(): print('first------>') yield 1 print('second----->') yield 2 print('third----->') yield 3 print('fouth----->') g=foo() from collections import Iterator print(isinstance(g,Iterator)

Python基础----生成器、三元表达式、列表生成式、生成器表达式

Python开发基础-Day9-生成器.三元表达式.列表生成式.生成器表达式 生成器 生成器函数:函数体内包含有yield关键字,该函数执行的结果是生成器,生成器在本质上就是迭代器. def foo(): print('first------>') yield 1 print('second----->') yield 2 print('third----->') yield 3 print('fouth----->') g=foo() from collections impor

函数 三元表达式 列表生成式 字典生成式 生成器表达式

1.三元表达式 针对 if  条件判断的简写 可以比较下比如: def max2(x,y): if x > y: return x else: return y max2(20,30) ================================================= x=10 y=20 res=x if x > y else y print(res) 真正的核心代码从4条变成了一条就可以解决了 代码形式:条件成立时的返回值    if 条件    else 条件不成立时的返回

Python生成器、三元表达式、列表生成式、字典生成式、生成器表达式

什么是生成器:只要函数内部包含有yield关键字,那么函数名()的到的结果(生成器地址)就是生成器,再调用函数不会执行函数内部代码这个生成器本身有  _iter_  he  _next_功能(即生成器就是一个迭代器) 为什么要用生成器:生成器是一种自定义迭代器的方式 总结yield的功能1.提供一种自定义迭代器的方式2.yield可以暂停住函数,返回值 yield he return 相同点:都是用在函数内,都可以返回值,没有类型限制,没有个数限制不同点:return只能返回一次值,yield可

三元表达式,列表生成式,字典生成式,生成器表达式

三元表达式 条件成立时的返回值 if 条件 else 条件不成立时的返回值 def max2(x,y): if x > y: return x else: return y print(max2(10,20)) x=10 y=20 res=x if x > y else y print(res) 列表生成式 #输出1~10中每个数字的平方l=[item**2 for item in range(1,11)] print(l) names=['alex','wxx','lxx'] 为列表中每个人

递归/匿名函数/三元表达式/列表生成式/字典生成式/二分算法

让在下揭开尔等的面纱,一探究竟:) >>>递归: 递归是一个往复的过程,也就是由两个过程组成,一个是计算过程,一个是将值层层返回的过程,递归的奇妙之处,就在于自身调用自身,然后,过程遵循由复杂到简单,最终满足相应条件后,退出,返回结果.说了一大堆,不过直接上代码: test_list = [1,[2,[3,[4,[5,[6,[7,[8,[9,[10,[11,[12,[13,[14,]]]]]]]]]]]]]] res = 0 def sum_list(test_list, res): f