Python 函数 切片 迭代 列表生成器
函数
编写 定义一个函数要用def语句 def sum(i,n): ⚠有冒号
返回多值 实际上是返回一个tuple
定义默认参数 默认参数的作用是简化调用 def power(x,n=2) 默认参数只能定义在必需参数后面 使用时,power(2)或power(3,4)
定义可变参数 可变参数的名字前面有个*号,我们可以传入0个,1个或多个参数给可变参数
Python解释器将传入的一组参数组装成一个tuple传递给参数
切片
对list切片
L[0:3] 从索引0开始,直到索引3为止,但不包括索引3
L[:3] 如果索引从0开始,可以省略
L[1:3] 从索引1开始,直到索引3为止,不包括索引3
L[:] 从头到尾
L[::3] 从头到尾,每3个取一个,每隔两个取一个
#range(1,101) 可以创建一个数列 [1,2,3...,100] L = range(1,101)
前10个数:L[0:10]
取出3的倍数 L[2::3]
取出不大于50的5的倍数 L[4:50:5]
倒叙切片
L[-2:] 从倒数第二个开始到最后
L[:-2] 从头到倒数第二个(不包含)
L[-4:-1:2] 从倒数第4个到倒数第一个,并每两个取一个
字符串切片 字符串表可看成是一种list,每个元素是一个字符。 字符串可以用切片操作
迭代
什么是迭代
Python的for循环不仅可以用在list或tuple上,还可以作用在其他任何可迭代对象上。迭代操作就是对于一个集合,无论该集合是有序还是无序,用for循环可以依次取出集合的一个元素。
集合的分类:
有序:list tuple str unicode
无序: set
有key-value且无序: dict
索引的迭代
在Python中,迭代永远是取出元素本身,而非元素的索引。
可以使用enumerate()函数获得索引的迭代
for index,name in enumerate(L):
print index,'-',name
实际上enumerate()把每个元素变成tuple(index,element)
zip(L1,L2)将list L1与L2合并, [(L1.a,L2.a),(L2.a,L2.b)...]
迭代dict中value
使用 for item in D 输出的是key
dict对象有一个 values()方法,这方法把dict转换成一个包含所有value的list
除了values()方法还有一个itervalues()方法
区别: values()方法实际上把 dict转换成包含value的list。 itervalues()不会,他是在迭代过程中依次取出value 节省了生成list所需的空间
如果一个对象说自己可迭代,那我们直接用for循环去迭代它,迭代是一种抽象的数据操作,它不对迭代对象内部的数据有任何要求
迭代dict中key和value
同时迭代key和value。使用items()方法。将dict对象转换成包含tuple的list
列表生成器
生成列表
列表生成式: 把要生成的元素放到前面,后面跟for循环,就可以创建list
[x*x for x in range(1,101)]
条件过滤
[x*x for x in range(1,101) if x%2==0]
列表生成式的for循环后面还可以加上if判断 只有当if条件为True时,才把当前元素添加到列表
def toUpper(L):
return [x.upper() for x in L if isinstance(x,str)]
多层表达式
多层for循环来生成列表
print [100*n1+10*n2+n3 for n1 in range(1,10) for n2 in range(0,10) for n3 in range(1,10) if n1==n3]
Python 函数 切片 迭代 列表生成器的更多相关文章
- Python学习 Day 4 函数 切片 迭代 列表生成式 生成器
定义函数 def my_abs(x):#求绝对值的my_abs函数 if x >= 0: return x else: return –x def nop():#空函数 pass#占位符 参数检 ...
- python 基础 切片 迭代 列表生成式
对list 进行切片 如列表 L = ['Adam', 'Lisa', 'Bart', 'Paul'] L[0:3] ['Adam', 'Lisa', 'Bart'] L[0:3]表示,从索引0开始取 ...
- python高级特性:切片/迭代/列表生成式/生成器
廖雪峰老师的教程上学来的,地址:python高级特性 下面以几个具体示例演示用法: 一.切片 1.1 利用切片实现trim def trim(s): while s[:1] == " &qu ...
- python中的迭代、生成器等等
本人对编程语言实在是一窍不通啊...今天看了廖雪峰老师的关于迭代,迭代器,生成器,递归等等,word天,这都什么跟什么啊... 1.关于迭代 如果给定一个list或tuple,我们可以通过for循环来 ...
- python之 可迭代 迭代器 生成器
0. 1.总结 (1) (a)iterable 可迭代(对象) 能力属性 指一个对象能够一次返回它的一个成员,for i in a_list 而不需要通过下标完成迭代. 例子包括所有序列类型(list ...
- Python 函数之迭代器和生成器
1.迭代器 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退,迭代器仅仅在迭代到某个元素时才计算该元素,而在这之前或之后,元素可 ...
- python函数中把列表(list)当参数时的"入坑"与"出坑"
在Python函数中,传递的参数如果默认有一个为 列表(list),那么就要注意了,此处有坑!! 入坑 def f(x,li=[]): for i in range(x): li.append(i*i ...
- Python函数中的列表
在看21天的Python书中写出了一个陷阱,但没给出解释,以下为代码陷阱
- Python入门篇-解析式、生成器
Python入门篇-解析式.生成器 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.列表解析式(List Comprehension) 1>.列表解析式语法 语法 [ 返回 ...
随机推荐
- js编程风格
1.缩进层级,建议四个空格. 2.语句结尾使用分号. 3.行的长度不超过80个字符. 4.换行建议加两个缩进,即8个空格. 5.合理的利用空行. 6.命名: 6.1 变量,驼峰式大小写,有小写字母开始 ...
- C++之------运算符重载
① 什么是运算符重载? 何为C++的运算符重载呢? 其实就是运算符给它重新赋予新的含义或者多重含义.让它有另外一种新的功能. 为什么需要运算符重载? 面向对象中为了实现类的多态性,我们就引用了运算符 ...
- 健康管理app要注意哪些要点
健康管理app现在变得越来越热,越来越多的垂直领域的加入,让健康app的市场逐渐扩大,但移动健康管理app仍有许多缺陷需要解决.健康管理并不是治病,而是让健康的人更好的保持身体健康状态,让慢性病高风险 ...
- 导入时如何定制spring-boot依赖项的版本
spring-boot通过maven的依赖管理为我们写好了很多依赖项及其版本,我们可拿来使用.spring-boot文档介绍了两种使用方法,一是继承,二是导入. 通过<parent>继承: ...
- mysql 存储过程 事务处理
BEGIN ; ; START TRANSACTION; #这边放sql语句,涉及到的表必须都为InnoDB THEN ROLLBACK; ELSE COMMIT; END IF; END
- 【技术文档】《算法设计与分析导论》R.C.T.Lee等·第5章 树搜索策略
计算机中许多问题的解空间可以用一棵树来表示,最优解就在树中的一个分支上,因此,我们在解这类问题时可以采用树搜索策略,最经典的问题包括0/1背包问题.旅行商问题.哈密顿回路问题,还有8数码问题(就是我们 ...
- .Net插件编程模型:MEF和MAF[转载]
.Net插件编程模型:MEF和MAF MEF和MAF都是C#下的插件编程框架,我们通过它们只需简单的配置下源代码就能轻松的实现插件编程概念,设计出可扩展的程序.这真是件美妙的事情! 今天抽了一点时间, ...
- [Python笔记][第三章Python选择与循环]
1月28日学习 Python选择与循环 选择结构 多分枝选择结构 if 表达式 1: 语句块 1 elif 表达式 2: 语句块 2 elif 表达式 3: 语句块 3 ... else : 语句块 ...
- [WARNING] Warning: selected war files include a WEB-INF/web.xml which will be ignored (webxml attribute is missing from war task, or ignoreWebxml attribute is specified as 'true')
WARNING] Warning: selected war files include a WEB-INF/web.xml which will be ignored (webxml attribu ...
- Spring 入门 Ioc-Xml
通过一个小例子演视怎么通过 Spring 往程序中注入对象,而非手动 new 对象. 一.导入 Spring 所需要的包 spring-framework-2.5.6 版需要导入以下包: 1.---- ...