Day9 python高级特性-- 列表生成式 List Comprehensions
私理解为,就是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]
>>> [ 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']
三层和三层以上用的很少。
>>> 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']
>>> [ 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的更多相关文章
- Python高级特性——列表生成式(list Comprehensions)
List Comprehensions 即列表生成式,是Python内置的强大的用来生成列表list的生成式. 简单菜: >>> l = list(range(2,13)) > ...
- Python高级特性之:List Comprehensions、Generator、Dictionary and set ...
今天帅气的易哥和大家分享的是Pyton的高级特性,希望大家能和我一起学习这门语言的魅力. Python高级特性之:List Comprehensions.Generator.Dictionary an ...
- Python实用笔记 (9)高级特性——列表生成式
列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式. 举个例子,要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, ...
- Python高级教程-列表生成式
List Comprehensions(列表生成式) 列表生成式,是Python内置的非常简单却强大的可以用来创建list的生成式. 例如,要生成list:[1,2,3,4,5,6,7,8,9,10] ...
- [python学习篇][廖雪峰][1]高级特性--列表生成式
>>> import os >>> [d for d in os.listdir(r"d:\temp")] ['0.png', '0.xml', ...
- 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 ...
- python高级特性:切片/迭代/列表生成式/生成器
廖雪峰老师的教程上学来的,地址:python高级特性 下面以几个具体示例演示用法: 一.切片 1.1 利用切片实现trim def trim(s): while s[:1] == " &qu ...
- 三、python高级特性(切片、迭代、列表生成器、生成器)
1.python高级特性 1.1切片 list列表 L=['Mli','add','sal','saoo','Lkkl'] L[0:3] #即为['Mli','add','sal'] 从索引0开始 ...
- Python 高级特性介绍 - 迭代的99种姿势 与协程
Python 高级特性介绍 - 迭代的99种姿势 与协程 引言 写这个笔记记录一下一点点收获 测试环境版本: Python 3.7.4 (default, Sep 28 2019, 16:39:19) ...
随机推荐
- React native路由跳转navigate、push、replace的区别
由于没有系统的去学习RN,对路由跳转了解不多,只是跟着项目在做,抽点时间简单学习一下RN路由跳转方法区别,总结如下: 如上图,外部是一个栈容器,此时A页面在最底部,navigate到B页面,为什么此时 ...
- 《Machine Learning in Action》—— 懂的都懂,不懂的也能懂。非线性支持向量机
说在前面:前几天,公众号不是给大家推送了第二篇关于决策树的文章嘛.阅读过的读者应该会发现,在最后排版已经有点乱套了.真的很抱歉,也不知道咋回事,到了后期Markdown格式文件的内容就解析出现问题了, ...
- First day,beginning!
beginning 在闲暇的时光记录当下的生活,一直是自己所期盼的: 由于种种原因(懒惰),一直未能开始,那么就从今天开始吧! 看下日期,从实习到现在一个月刚刚好: 公司很不错,师傅特别好,感觉自己是 ...
- 掌握Python可以去哪些岗位?薪资如何?
一.人工智能 Python作为人工智能的黄金语言,选择人工智能作为就业方向是理所当然的,就业前景也还不错.人工智能工程师的招聘起薪一般在20K-35K,如果是初级工程师,起薪一般12K. 二.大数据 ...
- 建议收藏!超详细的JVM反射原理技术点总结
反射定义 1,JAVA反射机制是在运行状态中 对于任意一个类,都能够知道这个类的所有属性和方法: 对于任意一个对象,都能够调用它的任意一个方法和属性: 这种动态获取的信息以及动态调用对象的方法的功能称 ...
- kali linux与虚拟机Vmware安装vmware tools(主机与虚拟机的文件拖拽)
一.打开虚拟机任务栏"虚拟机"-----点击安装Vmware tools 二.回到开启的kali linux系统中,找到vmware tools CD文件夹,拖拽出文件中的压缩文件 ...
- 在Guitar Pro中如何调节拍
编辑一首曲子的时候,曲子的节奏往往是很重要的,那节奏一般是怎样设置的呢,在{cms_selflink page='index' text='Guitar Pro'}中,一般是通过调节节拍来完成的,很多 ...
- LeetCode 028 Implement strStr()
题目要求:Implement strStr() Implement strStr(). Returns the index of the first occurrence of needle in h ...
- 08_UI控件
uiControl整体界面如下图所示,按照视频教程,学习控件由于是初学,都是最基础知识.还有ImageSwitcher.Gallery未更新,o(╯□╰)o 1 package com.example ...
- Java String 演进全解析
前言 String 是我们使用最频繁的对象,使用不当会对内存.程序的性能造成影响,本篇文章全面介绍一下 Java 的 String 是如何演进的,以及使用 String 的注意事项. 下面的输出结果是 ...