首页 > 软件开发 > PYTHON >

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

来源:互联网 2023-03-16 19:16:32 241

列表推导式,有的资料也叫列表解析表达式;是对其他的序列(例如字符串,列表,元组)中的元素重新计算生成一个新的列表。像是for语句的简写形式;XTX办公区 - 实用经验教程分享!

2自学Python-for循环XTX办公区 - 实用经验教程分享!

1,简单结构:

  • 1

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

    XTX办公区 - 实用经验教程分享!

    XTX办公区 - 实用经验教程分享!

    1)一个表达式;XTX办公区 - 实用经验教程分享!

    2)for循环语句的第一行;XTX办公区 - 实用经验教程分享!

    3)一对中括号,包含1和2;(预示生成一个列表)XTX办公区 - 实用经验教程分享!

    [ 1)表达式 2)for 循环语句的第一行]XTX办公区 - 实用经验教程分享!

    如:[x**2 for x in range(0,10)]XTX办公区 - 实用经验教程分享!

    自学Python-语句之列表推导式XTX办公区 - 实用经验教程分享!

  • 1该信息未经许可获取自百度经验
  • 2

    先举例分析运行过程:XTX办公区 - 实用经验教程分享!

    例如:#将list_a=[1,2,3,4,5]元素扩大10倍,生成新的列表。XTX办公区 - 实用经验教程分享!

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

    XTX办公区 - 实用经验教程分享!

    XTX办公区 - 实用经验教程分享!

    --------------------XTX办公区 - 实用经验教程分享!

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

    XTX办公区 - 实用经验教程分享!

    XTX办公区 - 实用经验教程分享!

    list_b=[]

    XTX办公区 - 实用经验教程分享!

    for x in list_a:

    XTX办公区 - 实用经验教程分享!

    list_b.append(x*10)

    XTX办公区 - 实用经验教程分享!

    print(list_b)XTX办公区 - 实用经验教程分享!

    输出:[10, 20, 30, 40, 50]XTX办公区 - 实用经验教程分享!

    --------------------XTX办公区 - 实用经验教程分享!

    用列表推导式来写:XTX办公区 - 实用经验教程分享!

    --------------------XTX办公区 - 实用经验教程分享!

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

    XTX办公区 - 实用经验教程分享!

    XTX办公区 - 实用经验教程分享!

    list_b=[x*10 for x in list_a]

    XTX办公区 - 实用经验教程分享!

    print(list_a)XTX办公区 - 实用经验教程分享!

    输出:[10, 20, 30, 40, 50]XTX办公区 - 实用经验教程分享!

    --------------------XTX办公区 - 实用经验教程分享!

    比较看出,列表推导式像是for循环语句;XTX办公区 - 实用经验教程分享!

    可以简单的理解为:XTX办公区 - 实用经验教程分享!

    每次取出列表中的元素赋值给x,和10相乘,计算后生成新的元素。新元素组成新列表;XTX办公区 - 实用经验教程分享!

    XTX办公区 - 实用经验教程分享!

    XTX办公区 - 实用经验教程分享!

    根据这个思路再写个例子;XTX办公区 - 实用经验教程分享!

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

    XTX办公区 - 实用经验教程分享!

    XTX办公区 - 实用经验教程分享!

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

    XTX办公区 - 实用经验教程分享!

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

    XTX办公区 - 实用经验教程分享!

    print(bd_items)XTX办公区 - 实用经验教程分享!

    输出:['百度-经验', '百度-知道', '百度-新闻', '百度-百科', '百度-贴吧']XTX办公区 - 实用经验教程分享!

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

    XTX办公区 - 实用经验教程分享!

    XTX办公区 - 实用经验教程分享!

    每次取出列表中的一个元素赋值给x和字符串‘百度-’搭配,组成一个新的列表。XTX办公区 - 实用经验教程分享!

    貌似和for循环语句没什么区别。XTX办公区 - 实用经验教程分享!

    自学Python-语句之列表推导式XTX办公区 - 实用经验教程分享!

  • 2.和if搭配结构:

  • 1

    在简单结构的基础上加上条件语句ifXTX办公区 - 实用经验教程分享!

    [ 1.表达式 2.for 循环语句的第一行 3.if条件语句的第一行]XTX办公区 - 实用经验教程分享!

    说到if语句,就会想到判断,过滤,筛选;找出符合你规定条件的数据;XTX办公区 - 实用经验教程分享!

    1自学Python条件语句XTX办公区 - 实用经验教程分享!

    自学Python-语句之列表推导式XTX办公区 - 实用经验教程分享!

  • 2

    还是先说个例子来分析:XTX办公区 - 实用经验教程分享!

    #筛选出1-100之间的所有11的倍数的数;XTX办公区 - 实用经验教程分享!

    --------------------XTX办公区 - 实用经验教程分享!

    numList=[x for x in range(1,100) if x==0]

    XTX办公区 - 实用经验教程分享!

    print(numList)XTX办公区 - 实用经验教程分享!

    --------------------XTX办公区 - 实用经验教程分享!

    #for循环写法:XTX办公区 - 实用经验教程分享!

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

    XTX办公区 - 实用经验教程分享!

    numList=[]

    XTX办公区 - 实用经验教程分享!

    for x in range(1,100):

    XTX办公区 - 实用经验教程分享!

    if x==0:

    XTX办公区 - 实用经验教程分享!

    numList.append(x)

    XTX办公区 - 实用经验教程分享!

    print(numList)XTX办公区 - 实用经验教程分享!

    输出:[11, 22, 33, 44, 55, 66, 77, 88, 99]XTX办公区 - 实用经验教程分享!

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

    XTX办公区 - 实用经验教程分享!

    XTX办公区 - 实用经验教程分享!

    比较可以看出,和基本结构的运行方法没什么区别,只是在for后面加了个if判断。XTX办公区 - 实用经验教程分享!

    #筛选姓刘的人员:XTX办公区 - 实用经验教程分享!

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

    XTX办公区 - 实用经验教程分享!

    nameList=['诸葛亮','刘备','关羽','张飞','刘易斯','刘德华','张学友','刘欢','刘翔','齐德隆','刘亦菲','齐东强']

    XTX办公区 - 实用经验教程分享!

    list_Liu=[x for x in nameList if x[0]=='刘']

    XTX办公区 - 实用经验教程分享!

    print(list_Liu)XTX办公区 - 实用经验教程分享!

    输出:['刘备', '刘易斯', '刘德华', '刘欢', '刘翔', '刘亦菲']XTX办公区 - 实用经验教程分享!

    --------------------XTX办公区 - 实用经验教程分享!

    #比较用for循环的写法:XTX办公区 - 实用经验教程分享!

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

    XTX办公区 - 实用经验教程分享!

    nameList=['诸葛亮','刘备','关羽','张飞','刘易斯','刘德华','张学友','刘欢','刘翔','齐德隆','刘亦菲','齐东强']

    XTX办公区 - 实用经验教程分享!

    list_liu=[]

    XTX办公区 - 实用经验教程分享!

    for x in nameList:

    XTX办公区 - 实用经验教程分享!

    if x[0]=='刘':

    XTX办公区 - 实用经验教程分享!

    list_liu.append(x)

    XTX办公区 - 实用经验教程分享!

    print(list_liu)XTX办公区 - 实用经验教程分享!

    输出:['刘备', '刘易斯', '刘德华', '刘欢', '刘翔', '刘亦菲']XTX办公区 - 实用经验教程分享!

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

    XTX办公区 - 实用经验教程分享!

    XTX办公区 - 实用经验教程分享!

    可以看出,用列表推导式,更加简洁。XTX办公区 - 实用经验教程分享!

    自学Python-语句之列表推导式XTX办公区 - 实用经验教程分享!

  • 3.for,for 嵌套结构

  • 1

    写法收集到两种顺序不同的写法:XTX办公区 - 实用经验教程分享!

    第一种是:[ 表达式 外层的for 循环语句的第一行 内层for 循环语句的第一行]XTX办公区 - 实用经验教程分享!

    外循环在前,内循环在后。XTX办公区 - 实用经验教程分享!

    第二种是:[ [表达式 内层的for 循环语句的第一行] 外层for 循环语句的第一行]XTX办公区 - 实用经验教程分享!

    显然是列表套列表;把内层循环在前做为表达式来使用,外层循环再后。XTX办公区 - 实用经验教程分享!

    自学Python-语句之列表推导式XTX办公区 - 实用经验教程分享!

  • 2

    #让列表a的每一个数据都和列表b的数据合并。XTX办公区 - 实用经验教程分享!

    --------------------XTX办公区 - 实用经验教程分享!

    listA=[1,2,3]

    XTX办公区 - 实用经验教程分享!

    listB=[15,16,17]

    XTX办公区 - 实用经验教程分享!

    listC=[]

    XTX办公区 - 实用经验教程分享!

    for a in listA:

    XTX办公区 - 实用经验教程分享!

    for b in listB:

    XTX办公区 - 实用经验教程分享!

    listC.append((a,b))

    XTX办公区 - 实用经验教程分享!

    XTX办公区 - 实用经验教程分享!

    listD=[(a,b) for a in listA for b in listB]

    XTX办公区 - 实用经验教程分享!

    print('C:',listC)

    XTX办公区 - 实用经验教程分享!

    print('D:',listD)XTX办公区 - 实用经验教程分享!

    输出:XTX办公区 - 实用经验教程分享!

    C: [(1, 15), (1, 16), (1, 17), (2, 15), (2, 16), (2, 17), (3, 15), (3, 16), (3, 17)]XTX办公区 - 实用经验教程分享!

    D: [(1, 15), (1, 16), (1, 17), (2, 15), (2, 16), (2, 17), (3, 15), (3, 16), (3, 17)]XTX办公区 - 实用经验教程分享!

    -------------------XTX办公区 - 实用经验教程分享!

    XTX办公区 - 实用经验教程分享!

    自学Python-语句之列表推导式XTX办公区 - 实用经验教程分享!

  • 3

    循环嵌套经典的例子就是99乘法表,那么用列表推导式怎么写呢:XTX办公区 - 实用经验教程分享!

    99乘法表最少三种写法:while,for,列表推导式。XTX办公区 - 实用经验教程分享!

    while循环;XTX办公区 - 实用经验教程分享!

    -------------------XTX办公区 - 实用经验教程分享!

    a=1

    XTX办公区 - 实用经验教程分享!

    while a 10:

    XTX办公区 - 实用经验教程分享!

    b = 1

    XTX办公区 - 实用经验教程分享!

    while b =a:

    XTX办公区 - 实用经验教程分享!

    print("%sx%s=%-3s"%(b,a,a*b),end="\t")

    XTX办公区 - 实用经验教程分享!

    b = 1

    XTX办公区 - 实用经验教程分享!

    a =1

    XTX办公区 - 实用经验教程分享!

    print()XTX办公区 - 实用经验教程分享!

    输出:(看图片)XTX办公区 - 实用经验教程分享!

    -------------------XTX办公区 - 实用经验教程分享!

    for循环写法:XTX办公区 - 实用经验教程分享!

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

    XTX办公区 - 实用经验教程分享!

    XTX办公区 - 实用经验教程分享!

    for x in range(1, 10):

    XTX办公区 - 实用经验教程分享!

    for y in range(1, x 1):

    XTX办公区 - 实用经验教程分享!

    print("%sx%s=%-3s" % (y, x, x * y), end='')

    XTX办公区 - 实用经验教程分享!

    print()XTX办公区 - 实用经验教程分享!

    输出:(看图片)XTX办公区 - 实用经验教程分享!

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

    XTX办公区 - 实用经验教程分享!

    XTX办公区 - 实用经验教程分享!

    列表推导式写法:XTX办公区 - 实用经验教程分享!

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

    XTX办公区 - 实用经验教程分享!

    XTX办公区 - 实用经验教程分享!

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

    XTX办公区 - 实用经验教程分享!

    print(table)XTX办公区 - 实用经验教程分享!

    输出:(看图片)XTX办公区 - 实用经验教程分享!

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

    XTX办公区 - 实用经验教程分享!

    XTX办公区 - 实用经验教程分享!

    这里字符串函数join()用于将列表中的元素连接成一个,去除多余的字符。XTX办公区 - 实用经验教程分享!

    \r\n换行;\t是table键。具体看下图。

    XTX办公区 - 实用经验教程分享!

    XTX办公区 - 实用经验教程分享!

    自学Python-语句之列表推导式XTX办公区 - 实用经验教程分享!

    自学Python-语句之列表推导式XTX办公区 - 实用经验教程分享!

    自学Python-语句之列表推导式XTX办公区 - 实用经验教程分享!

    自学Python-语句之列表推导式XTX办公区 - 实用经验教程分享!

    自学Python-语句之列表推导式XTX办公区 - 实用经验教程分享!

  • 总结:

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

    以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!XTX办公区 - 实用经验教程分享!


    标签: python

    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号统计代码