美文网首页
2019-05-08 列表生成器

2019-05-08 列表生成器

作者: luckybabying | 来源:发表于2019-05-08 09:28 被阅读0次

列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式。

举个例子,要生成list[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]可以用list(range(1, 11)):

>>>list(range(1, 11))

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

但如果要生成[1x1, 2x2, 3x3, ..., 10x10]怎么做?方法一是循环:

>>> L = []

>>> forxinrange(1,11):

... L.append(x * x)

...>>> L

[1,4,9,16,25,36,49,64,81,100]

但是循环太繁琐,而列表生成式则可以用一行语句代替循环生成上面的list:

>>> [x * x    for    x    in    range(1,11)]

[1,4,9,16,25,36,49,64,81,100]

写列表生成式时,把要生成的元素x * x放到前面,后面跟for循环,就可以把list创建出来,十分有用,多写几次,很快就可以熟悉这种语法。

for循环后面还可以加上if判断,这样我们就可以筛选出仅偶数的平方:

>>> [x * x    for    x    in    range(1,11)    if    x %2==0]

[4,16,36,64,100]

还可以使用两层循环,可以生成全排列:

>>> [m + n    for    m    in    'ABC'    for    n    in    'XYZ']['AX','AY','AZ','BX','BY','BZ','CX','CY','CZ']

三层和三层以上的循环就很少用到了。

运用列表生成式,可以写出非常简洁的代码。例如,列出当前目录下的所有文件和目录名,可以通过一行代码实现:

>>> import    os    # 导入os模块,模块的概念后面讲到

>>> [d    for    d    in    os.listdir('.')]    # os.listdir可以列出文件和目录['.emacs.d','.ssh','.Trash','Adlm','Applications','Desktop','Documents','Downloads','Library','Movies','Music','Pictures','Public','VirtualBox VMs','Workspace','XCode']

for循环其实可以同时使用两个甚至多个变量,比如dict的items()可以同时迭代key和value:

>>> d = {'x':'A','y':'B','z':'C'}

>>> for    k, v    in    d.items():

... print(k,'=', v)

...

y = B    

x = A    

z = C

因此,列表生成式也可以使用两个变量来生成list

>>> d = {'x':'A','y':'B','z':'C'}

>>> [k +'='+ v    for    k, v    in    d.items()]

['y=B','x=A','z=C']

最后把一个list中所有的字符串变成小写:

>>> L = ['Hello','World','IBM','Apple']

>>> [s.lower()    for    s    in    L]

['hello','world','ibm','apple']

以上内容均为廖雪峰老师所写,为了找个方式鼓励自己多多学习,让自己认真读并加深对廖老师每一句得话得含义,边学边复制简述,记录在简书这个平台里,大家要是有兴趣一起学习,可以登陆廖雪峰老师得官方网站。特别赞~~

    最后,谢谢简书这个平台,谢谢廖雪峰老师的知识的无私奉献~

相关文章

  • 2019-05-08 列表生成器

    列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成...

  • Python 生成器和迭代器

    生成器和迭代器 生成器 Python 列表推导和生成器表达式 在上文中简单介绍了生成器的作用。在列表推导创建列表时...

  • python高级特性-生成器

    生成器和列表生成式的区别列表生成式:[expr for iter_var in iterable]列表生成器:(e...

  • python_列表_迭代_函数_闭包

    列表生成器:1、生成一个普通列表:ls = [x for x in range(101)]为什么学习列表生成器:降...

  • 02Python学习笔记之二.六【生成器、pdb调试】2019-

    第1章节  生成器 1-1 生成器—生成器的2种方式   列表生成式:   什么是生成器:  1、把列表生成式的[...

  • 迭代器&生成器

    列表推导式: 列表生成式: 相当于: 以上就是用for语句的迭代器。 生成器表达式: 生成器函数: 调用: 生成器...

  • Python学习(2)

    本系列内容来源于 廖雪峰的Python教程 点击查看原文 迭代 列表生成式 生成器 列表生成器 生成器函数 高级函...

  • Python自动化测试进阶必学:生成器

    本文由柠檬班全程班49期学员superman原创。 生成器 列表推导式:直接生成列表 什么是生成器? 通过列表生成...

  • [python]练习笔记2

    filter和列表生成器的区别1.列表生成器接受的是序列,string、tuple、range、set、list、...

  • Python 各种推导式

    python 列表推导式 执行结果 生成器表达式 1 把列表解析的[]换成()得到的就是生成器表达式 2 列表解析...

网友评论

      本文标题:2019-05-08 列表生成器

      本文链接:https://www.haomeiwen.com/subject/ykppoqtx.html