Python内置的非常简单却强大的可以用来创建list的生成式。
    私理解为,就是for循环出来的结果搞成个list~~~~
   
要生成顺序增量list可以使用list(range(x,y))来进行,如:
        >>> list(range(1,11))
        [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
        >>> list(range(-12,-1))
        [-12, -11, -10, -9, -8, -7, -6, -5, -4, -3, -2]
        >>> list(range(11,1))
        []
        >>> list(range(-1,-12))
        []
       
但是要生成[1x1, 2x2, 3x3, 4x4, ..., 10x10]怎么做呢?可以用for循环:
        >>> L = []
        >>> for i in range(1,11):       #为什么是11?想想。
        ...     L.append(i * i)
        ...
        >>> L
        [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
       
也可以用列表生成式,更容易的实现:
        >>> [x * x for x in range(1,11)]
        [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
       
列表生成式:
    要生成的元素放到前面,后面跟for循环,就可以轻松的创建出list了。
   
   1.  for循环后可以加上if判断,如计算奇数的平方
        >>> [ x * x for x in range(1,11) if x % 2 == 1]
        [1, 9, 25, 49, 81]
   2.  也可以对for循环做多层嵌套,如两层:
        >>> [ m + n for m in 'ABCD' for n in 'abcdef' ]
        ['Aa', 'Ab', 'Ac', 'Ad', 'Ae', 'Af', 'Ba', 'Bb', 'Bc', 'Bd', 'Be', 'Bf', 'Ca', 'Cb', 'Cc', 'Cd', 'Ce', 'Cf', 'Da', 'Db', 'Dc', 'Dd', 'De', 'Df']
        三层和三层以上用的很少。
    3.  for循环可以同时使用两个以及更多个变量
        >>> a = { 'a': 'A', 'b': 'B', 'c': 'C' }
        >>> [ Alpha + '=' + Num for Alpha, Num in a.items() ]
        ['c=C', 'b=B', 'a=A']
       
        发现一个问题,如果有一个变量为int类型,则会出问题:
            >>> a = { 'a': 1, 'b': 2, 'c': 3 }
            >>> [ A + '=' + N for A, N in a.items() ]
            Traceback (most recent call last):
              File "<stdin>", line 1, in <module>
              File "<stdin>", line 1, in <listcomp>
            TypeError: Can't convert 'int' object to str implicitly
        这样就好了:
            >>> [ A + '=' + str(N)  for A , N in a.items()]
            ['c=3', 'b=2', 'a=1']
           
练习:
    1.把list中所有字符串变成小写
        >>> a = ['ABC', 'DEF', 'GHI']
        >>> [ i.lower() for i in a]
        ['abc', 'def', 'ghi']
    2.把list中的单词变成首字母大写
        >>> a = ['abc', 'def', 'ghi']
        >>> [ i[0].upper() + i[1:].lower() for i in a]
        ['Abc', 'Def', 'Ghi']
    3.前两个练习中的list如果出现数字,如何保证依然正确处理。
        #引入: 可以用isinstance()函数来判断是否为str
        >>> a = ['ABC', 'DEF', 'GHI', None, 123, 555]
        >>> [ i.lower() for i in a if isinstance(i, str) == True ]
        ['abc', 'def', 'ghi']
        >>> a = ['abc', 'def', 'ghi', None, 123, 'ABC']
        >>> [ i[0].upper() + i[1:].lower() for i in a if  isinstance(i, str)]
        ['Abc', 'Def', 'Ghi', 'Abc']    
       
    4.在3的基础上,能让非字符串也显示出来么?
        >>> a = ['abc', 'def', 'ghi', None, 123, 'ABC']
        >>> [ i[0].upper() + i[1:].lower() if isinstance(i, str) else i for i in a ]
        ['Abc', 'Def', 'Ghi', None, 123, 'Abc']   
        #这块的用法和老廖的课程上有些不同,理解理解。
        #先判断是否满足条件,满足则转换,不满足则不变。
        #而之前的是,先转换,再根据条件筛选结果?应该是这样的。
   
扩展:使用os模块的listdir,列出操作系统的文件和目录
        >>> import os
        >>> os.listdir('/')
        ['bin', 'boot', 'dev', 'etc', 'home', 'init', 'lib', 'lib64', 'media', 'mnt', 'opt', 'proc', 'root', 'run', 'sbin', 'srv', 'sys', 'tmp', 'usr', 'var']
       
        >>> a = [ 'ls /' + n for n in os.listdir('/') ]
        >>> for i in range(0,len(a)):
        ...     print(a[i])
        ...
        ls /bin
        ls /boot
        ls /dev
        ls /etc
        ls /home
        ls /init
        ls /lib
        ls /lib64
        ls /media
        ls /mnt
        ls /opt
        ls /proc
        ls /root
        ls /run
        ls /sbin
        ls /srv
        ls /sys
        ls /tmp
        ls /usr
        ls /var           
         #shell脚本里最喜欢干的事情~~  

Day9 python高级特性-- 列表生成式 List Comprehensions的更多相关文章

  1. Python高级特性——列表生成式(list Comprehensions)

    List Comprehensions 即列表生成式,是Python内置的强大的用来生成列表list的生成式. 简单菜: >>> l = list(range(2,13)) > ...

  2. Python高级特性之:List Comprehensions、Generator、Dictionary and set ...

    今天帅气的易哥和大家分享的是Pyton的高级特性,希望大家能和我一起学习这门语言的魅力. Python高级特性之:List Comprehensions.Generator.Dictionary an ...

  3. Python实用笔记 (9)高级特性——列表生成式

    列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式. 举个例子,要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, ...

  4. Python高级教程-列表生成式

    List Comprehensions(列表生成式) 列表生成式,是Python内置的非常简单却强大的可以用来创建list的生成式. 例如,要生成list:[1,2,3,4,5,6,7,8,9,10] ...

  5. [python学习篇][廖雪峰][1]高级特性--列表生成式

    >>> import os >>> [d for d in os.listdir(r"d:\temp")] ['0.png', '0.xml', ...

  6. python高级特性-列表生成

    概述 [x *x for x in range(1,11)][k+'='+v for k,v in d.items()] [s.lower() for s in L] 详解 1.单层迭代 >&g ...

  7. python高级特性:切片/迭代/列表生成式/生成器

    廖雪峰老师的教程上学来的,地址:python高级特性 下面以几个具体示例演示用法: 一.切片 1.1 利用切片实现trim def trim(s): while s[:1] == " &qu ...

  8. 三、python高级特性(切片、迭代、列表生成器、生成器)

    1.python高级特性 1.1切片 list列表 L=['Mli','add','sal','saoo','Lkkl'] L[0:3]  #即为['Mli','add','sal']  从索引0开始 ...

  9. Python 高级特性介绍 - 迭代的99种姿势 与协程

    Python 高级特性介绍 - 迭代的99种姿势 与协程 引言 写这个笔记记录一下一点点收获 测试环境版本: Python 3.7.4 (default, Sep 28 2019, 16:39:19) ...

随机推荐

  1. 利用requestes\pyquery\BeautifulSoup爬取某租房公寓(深圳市)4755条租房信息及总结

    为了分析深圳市所有长租.短租公寓的信息,爬取了某租房公寓深圳区域所有在租公寓信息,以下记录了爬取过程以及爬取过程中遇到的问题: 爬取代码: 1 import requests 2 from reque ...

  2. PHP的命令执行漏洞学习

    首先我们来了解基础 基础知识来源于:<web安全攻防>徐焱 命令执行漏洞 应用程序有时需要调用一些执行系统命令的函数,如在PHP中,使用system.exec.shell_exec.pas ...

  3. php读取Excel文件数据

    首先先下载 PHPExcel 脚本之家下载地址:https://www.jb51.net/codes/194070.html 然后把文件丢到php脚本同级目录里面 在php文件里面写下以下代码即可 & ...

  4. 面试半年!三面阿里,四面蚂蚁金服,居然倒在了一个Java集合之Map上?

    Map接口 Map与Collection并列存在.用于保存具有映射关系的数据:key-valueMap中的key和value都可以是任何引用类型的数据Map中的key用set来存放,不允许重复,即同一 ...

  5. 面试阿里,字节跳动99%会被问到的java线程和线程池,看完这篇你就懂了!

    前言: 最近也是在后台收到很多小伙伴私信问我线程和线程池这一块的问题,说自己在面试的时候老是被问到这一块的问题,被问的很头疼.前几天看到后帮几个小伙伴解决了问题,但是问的人有点多我一个个回答也回答不过 ...

  6. pdfFactory如何设置限制打印和浏览文档权限

    当我们进行私密文件的分享时,除了要设置密码保护文件内容外,还要注意设置打印限制,防止他人利用打印的方式,进行纸质文件的传播. 在使用pdfFactory安全策略时,我们可以通过设定禁止打印的方式,完全 ...

  7. 细说FL Studio中的Wasp合成器功能

    FL Studio 简称FL,因其Logo像水果,故国人亲切的叫他"水果"本章节采用图文结合的方式给大家讲解FL Studio中的Wasp合成器功能.感兴趣的朋友可以一起来交流哦. ...

  8. 通过Camtasia来制作画中画视频效果的方法

    随着全民娱乐化的发展,视频的形式也更加多种多样了.视频形式的多样化能让观众从不同形式的视频中观赏到更有趣味的内容.比如像画中画的视频形式,让视频中的人物看起来像与观众一同观看视频,或者形成两个视频的对 ...

  9. Jmeter(二十九) - 从入门到精通 - Jmeter Http协议录制脚本工具-Badboy2(详解教程)

    1.简介 上一篇文中已经对Badboy做了一个基本上详细完整的介绍,这一篇宏哥带你们实战一下,这一篇主要讲解和分享:录制和运行脚本.参数化 首先让我们使用N模式录制一个脚本,测试用例编号为:1.1.1 ...

  10. C++之父接受采访:对 C++ 成功的关键和发展历程进行了回顾

    C++ 的起源可以追溯到 40 年前,但它仍然是当今使用最广泛的编程语言之一. 到 2020 年 9 月为止,C++ 是仅次于 C 语言.Java 和 Python,位于全球第四的编程语言.根据最新的 ...