多语言展示
当前在线:1003今日阅读:142今日分享:25

自学Python-语句之列表推导式

列表推导式,有的资料也叫列表解析表达式;是对其他的序列(例如字符串,列表,元组)中的元素重新计算生成一个新的列表。像是for语句的简写形式;2自学Python-for循环
1,简单结构:
1

最简单的结构有三部分组成: 1)一个表达式;2)for循环语句的第一行;3)一对中括号,包含1和2;(预示生成一个列表)[ 1)表达式  2)for 循环语句的第一行]如:[x**2 for x in range(0,10)]

2.和if搭配结构:
1

在简单结构的基础上加上条件语句if[ 1.表达式 2.for 循环语句的第一行 3.if条件语句的第一行]说到if语句,就会想到判断,过滤,筛选;找出符合你规定条件的数据;

2

还是先说个例子来分析:#筛选出1-100之间的所有11的倍数的数;--------------------numList=[x for x in range(1,100) if x%11==0] print(numList)--------------------#for循环写法:-------------------- numList=[] for x in range(1,100):     if x%11==0:         numList.append(x) print(numList)输出:[11, 22, 33, 44, 55, 66, 77, 88, 99] -------------------- 比较可以看出,和基本结构的运行方法没什么区别,只是在for后面加了个if判断。#筛选姓刘的人员:-------------------- nameList=['诸葛亮','刘备','关羽','张飞','刘易斯','刘德华','张学友','刘欢','刘翔','齐德隆','刘亦菲','齐东强'] list_Liu=[x for x in nameList if x[0]=='刘'] print(list_Liu)输出:['刘备', '刘易斯', '刘德华', '刘欢', '刘翔', '刘亦菲']--------------------#比较用for循环的写法:-------------------- nameList=['诸葛亮','刘备','关羽','张飞','刘易斯','刘德华','张学友','刘欢','刘翔','齐德隆','刘亦菲','齐东强'] list_liu=[] for x in nameList:     if x[0]=='刘':         list_liu.append(x) print(list_liu) 输出:['刘备', '刘易斯', '刘德华', '刘欢', '刘翔', '刘亦菲']-------------------- 可以看出,用列表推导式,更加简洁。

3.for,for 嵌套结构
1

写法收集到两种顺序不同的写法:第一种是:[ 表达式 外层的for 循环语句的第一行 内层for 循环语句的第一行]外循环在前,内循环在后。第二种是:[ [表达式 内层的for 循环语句的第一行] 外层for 循环语句的第一行]显然是列表套列表;把内层循环在前做为表达式来使用,外层循环再后。

2

#让列表a的每一个数据都和列表b的数据合并。--------------------listA=[1,2,3] listB=[15,16,17] listC=[] for a in listA:     for b in listB:         listC.append((a,b))  listD=[(a,b) for a in listA for b in listB] print('C:',listC) print('D:',listD)输出:C: [(1, 15), (1, 16), (1, 17), (2, 15), (2, 16), (2, 17), (3, 15), (3, 16), (3, 17)]D: [(1, 15), (1, 16), (1, 17), (2, 15), (2, 16), (2, 17), (3, 15), (3, 16), (3, 17)]-------------------

3

循环嵌套经典的例子就是99乘法表,那么用列表推导式怎么写呢:99乘法表最少三种写法:while,for,列表推导式。while循环;-------------------a=1 while a <10:     b = 1     while b <=a:         print('%sx%s=%-3s'%(b,a,a*b),end='\t')         b += 1     a+=1     print()输出:(看图片)-------------------for循环写法:------------------- for x in range(1, 10):     for y in range(1, x+1):         print('%sx%s=%-3s' % (y, x, x * y), end='')     print()输出:(看图片)------------------- 列表推导式写法:------------------- table='\r\n'.join(['\t'.join(['%sx%s=%s'%(y,x,x*y) for y in range(1,x+1)]) for x in range(1,10)]) print(table)输出:(看图片)------------------- 这里字符串函数join()用于将列表中的元素连接成一个,去除多余的字符。\r\n换行;\t是table键。具体看下图。

总结:

综上所述:列表推导式的方法更加精简,但是对于初学者来说,不太好掌握,比如,让我写,我就得先拿for循环来试试。然后再根据for循环来完成,应该跟掌握的熟练度有关。如果有更多if,和for,那就彻底蒙圈了。END

推荐信息