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

2025-09-30 06:03:16

1、最简单的结构有三部分组成:

1)一个表达式;

2)for循环语句的第一行;

3)一对中括号,包含1和2;(预示生成一个列表)

[ 1)表达式  2)for 循环语句的第一行]

如:[x**2 for x in range(0,10)]

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

2、先举例分析运行过程:

例如:#将list_a=[1,2,3,4,5]元素扩大10倍,生成新的列表。

如果按传统的for循环来写:

--------------------

list_a=[1,2,3,4,5]

list_b=[]

 

for x in list_a:

 

   list_b.append(x*10)

 

print(list_b)

输出:[10, 20, 30, 40, 50]

--------------------

用列表推导式来写:

--------------------

list_a=[1,2,3,4,5]

list_b=[x*10 for x in list_a]

 

print(list_a)

输出:[10, 20, 30, 40, 50]

--------------------

比较看出,列表推导式像是for循环语句;

可以简单的理解为:

每次取出列表中的元素赋值给x,和10相乘,计算后生成新的元素。新元素组成新列表;

根据这个思路再写个例子;

--------------------

items=['经验','知道','新闻','百科','贴吧']

 

bd_items=['百度-'+x for x in items]

 

print(bd_items)

输出:['百度-经验', '百度-知道', '百度-新闻', '百度-百科', '百度-贴吧']

--------------------

每次取出列表中的一个元素赋值给x和字符串‘百度-’搭配,组成一个新的列表。

貌似和for循环语句没什么区别。

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

1、在简单结构的基础上加上条件语句if

[ 1.表达式 2.for 循环语句的第一行 3.if条件语句的第一行]

说到if语句,就会想到判断,过滤,筛选;找出符合你规定条件的数据;

1自学Python条件语句

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

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)

 输出:['刘备', '刘易斯', '刘德华', '刘欢', '刘翔', '刘亦菲']

--------------------

可以看出,用列表推导式,更加简洁。

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

1、写法收集到两种顺序不同的写法:

第一种是:[ 表达式 外层的for 循环语句的第一行 内层for 循环语句的第一行]

外循环在前,内循环在后。

第二种是:[ [表达式 内层的for 循环语句的第一行] 外层for 循环语句的第一行]

显然是列表套列表;把内层循环在前做为表达式来使用,外层循环再后。

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

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)]

-------------------

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

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键。具体看下图。

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

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

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

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

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

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢