赞
踩
列表生成式即List Comprehensions,是一种Python内置,非常简单却强大,可以通过表达式推导来生成一个list列表的方式,又名列表推导式
例如,要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]可以用list(range(1, 11)):,
但是如果想生成[1 * 1, 2 * 2, 3 * 3, ..., 10 * 10]呢
方法一:通过循环
- lt=[]
- a=[]
- for i in range(1,11):
- lt.append(f'{i}*{i}={i*i}')
- print(lt)
其输出结果为:
方法二:使用列表推导式,一行代码即可代替循环生成上面的list:
即可以将上部分代码简化一下,把要生成的元素x * x放到前面 后面跟for循环,就可以把list创建出来,如下所示
简化前:
- lt=[]
- a=[]
- for i in range(1,11):
- lt.append(f'{i}*{i}={i*i}')
- print(lt)
简化后:
- lt=[f'{i}*{i}={i*i}' for i in range(1,11)]
- print(lt)
其结果和上部分一样,即创建一个空列表,列表内的需要的内容放在最前面,后面跟上for循环语句。
其中for循环后面还可以加上if判断,例如仅将一定范围内的偶数筛选出来:
- lt=[]
- for i in range(1,11):
- if i%2==0:
- lt.append(i)
- print(lt)
通过列表生成式:
- lt=[i for i in range(1,11) if i%2==0]
- print(lt)
输出结果都为:
也使用两层循环,例如生成ABC和XYZ中全部字母的排列组合:
优化前:
- lt=[]
- for a in "ABCDEF":
- for b in "abcdef":
- lt.append(a+b) #字符串相加即为合并
- print(lt)
优化后:即将内层循环同样往后增加
- lt=[a+b for a in "ABCDEF" for b in "abcdef"]
- print(lt)
杨辉三角示例图如下:(先思考思路,再自己敲,然后再来看解释)
首先找规律,例如可以写出第三层求第四层代码,代码如下
- l3=[1,2,1]
- l4=[]
- for i in range(len(l3)-1):
- l4.append(l3[i]+l3[i+1])
- l4=[1]+l4+[1]
- print(l4)
其运行结果为 :
同样我们也可以求第四层到第五层的代码:
- l3=[1,2,1]
- l4=[]
- for i in range(len(l3)-1):
- l4.append(l3[i]+l3[i+1])
- l4=[1]+l4+[1]
- print(l4)
-
- l5=[]
- for i in range(len(l4)-1):
- l5.append(l4[i]+l4[i+1])
- l5=[1]+l5+[1]
- print(l5)
往下推可以,那么我们往上推,从第二轮推到第三轮
- l2=[1,1]
- l3=[]
- for i in range(len(l2)-1):
- l3.append(l2[i]+l2[i+1])
- l3=[1]+l3+[1]
- print(l3)
我们再推第一轮到第二轮
- l1=[1]
- l2=[]
- for i in range(len(l1)-1):
- l2.append(l1[i]+l1[i+1])
- l2=[1]+l2+[1]
- print(l2)
至此我们已经单独求完杨辉三角绝大多数思路部分内容,那么接下来该想一想如何完整的打印出来,
- last_list=[1]
- print(last_list)
- for j in range(10):
- next_list=[]
- for i in range(len(last_list)-1):
- next_list.append(last_list[i]+last_list[i+1])
- next_list=[1]+next_list+[1]
- last_list=next_list
- print(last_list)
其中内层for循环可以写成列表生成式:
- last_list=[] #初始化上一层
- print(last_list)
- for j in range(10): #自定义循环10次,即打印10层
- next_list=[last_list[i]+last_list[i+1] for i in range(len(last_list)-1)]
- next_list=[1]+next_list+[1]
- last_list=next_list
- print(last_list)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。