python学习笔记二:切片、迭代、迭代器与相关函数

原创 2015年07月10日 14:54:46


Python中的切片、迭代、迭代器与相关函数


1、切片


使用切片常常可以以一行代码替代普通的循环。


Python中可以对序列切片,序列是指:元组、列表、字符串,这里以列表为例。


>>> L=list(range(100))


>>> L[0:10]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]


>>> L[:5]
[0, 1, 2, 3, 4]


>>> L[95:]
[95, 96, 97, 98, 99]


>>> L[-10]
90


>>> L[-10:]
[90, 91, 92, 93, 94, 95, 96, 97, 98, 99]


>>> L[-10:-1]
[90, 91, 92, 93, 94, 95, 96, 97, 98]


>>> L[:10:2]
[0, 2, 4, 6, 8]


注意,表示切片的[]可以接在任何序列后面(例如变量、常量或函数)。


2、迭代


使用迭代而不是普通循环可以提高性能。


判断对象是否可迭代:


>>> from collections import Iterable
>>> isinstance('abc', Iterable)
True


迭代的例子:


>>> for x,y in [(1,1),(2,4),(3,9)]:
...     print(x,y)
... 
(1, 1)
(2, 4)
(3, 9)


3、列表生成式


使用列表生成式可以以更少的代码生成所需的列表。


生成1到10这些数字中偶数的平方的列表:


>>> [x*x for x in range(1,11) if x % 2 ==0]
[4, 16, 36, 64, 100]


4、迭代器


判断是否是迭代器(与可迭代的概念不同):


>>> from collections import Iterator
>>> isinstance((x for x in range(10)), Iterator)


凡是可作用于for循环的对象都是Iterable类型;


凡是可作用于next()函数的对象都是Iterator类型,它们表示一个惰性计算的序列;


集合数据类型如list、dict、str等是Iterable但不是Iterator,不过可以通过iter()函数获得一个Iterator对象。


5、map与reduce


map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回。


>>> list(map(str, [1, 2, 3, 4, 5, 6, 7, 8, 9]))
['1', '2', '3', '4', '5', '6', '7', '8', '9']


reduce把一个函数作用在一个序列[x1, x2, x3, ...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算,返回计算结果。


>>> from functools import reduce
>>> def add(x, y):
...     return x + y
...
>>> reduce(add, [1, 3, 5, 7, 9])
25


6、filter


>>> def is_odd(n):
...     return n%2 ==1
... 
>>> list(filter(is_odd,[1,2,4,5,6,9,10,15]))
[1, 5, 9, 15]




7、sorted


sorted([36, 5, -12, 9, -21])
[-21, -12, 5, 9, 36]


sorted([36, 5, -12, 9, -21], key=abs)
[5, 9, -12, -21, 36]
key指定的函数将作用于list的每一个元素上


>>> sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower, reverse=True)
['Zoo', 'Credit', 'bob', 'about']

【TensorFlow】学习率、迭代次数和初始化方式对准确率的影响

想必学过机器学习的人都知道,学习率、训练迭代次数和模型参数的初始化方式都对模型最后的准确率有一定的影响,那么影响到底有多大呢?我初步做了个实验,在 TensorFlow 框架下使用 Logistics...
  • u010099080
  • u010099080
  • 2016年10月29日 16:46
  • 9897

python中的高效迭代器函数

python中内置的库中有个itertools,可以满足我们在编程中绝大多数需要迭代的场合,当然也可以自己造轮子,但是有现成的好用的轮子不妨也学习一下,看哪个用的顺手~首先还是要先import一下:#...
  • xiaodongxiexie
  • xiaodongxiexie
  • 2017年01月21日 12:21
  • 7341

牛顿法解机器学习中的Logistic回归

这仍然是近期系列文章中的一篇。在这一个系列中,我打算把机器学习中的Logistic回归从原理到应用详细串起来。本文将结合之前介绍的Logistic回归的原理,解释牛顿法在优化问题中的应用,特别是在求解...
  • baimafujinji
  • baimafujinji
  • 2016年04月18日 19:26
  • 6212

Python中可迭代对象、迭代器和生成器相关

可迭代对象 Iterable 迭代器 Iterator 生成器 Generator
  • jw690114549
  • jw690114549
  • 2017年10月16日 23:42
  • 60

python学习笔记-函数式编程、迭代器和生成器

1、函数式编程一般有以下特征: (1)函数能作为参数传递, 或者是作为返回值返回 (2)闭包:如果一个函数定义在另一个函数的作用域中,并且函数中引用了外部函数的局部变量,那么这个函数就是一个闭包。闭包...
  • Ssxysxy123
  • Ssxysxy123
  • 2016年06月28日 11:53
  • 486

python-cookbook学习笔记九 迭代器与生成器二

我们来看下yield在类中的应用。代码如下: class Node:     def __init__(self,value):         self._value=value    ...
  • zhfcmx1
  • zhfcmx1
  • 2017年05月02日 12:01
  • 154

Python 学习笔记 迭代器和生成器

迭一个迭代器是一个实现了__iter__()方法和 next()方法的对象,但是我发现这两个并不需要一起实现,就像Java中一样,返回迭代子的对象和迭代子是分离的。 __iter__() 只是返回迭代...
  • quqiuzhu
  • quqiuzhu
  • 2016年04月07日 08:32
  • 232

迭代器和解析——Python(学习笔记)

本篇文章主要介绍Python的迭代协议的相关概念
  • wangyezi19930928
  • wangyezi19930928
  • 2014年06月20日 10:59
  • 917

python-cookbook学习笔记八 迭代器与生成器一

迭代器: 假如我们有一个列表 items=[1,2,3].我们要遍历这个列表我们会用下面的方式 For i in items:   Print i 首先介绍几个概念:容器,可迭代对象,迭代器 容器是一...
  • zhfcmx1
  • zhfcmx1
  • 2017年04月30日 22:42
  • 160

Python学习笔记,切片,迭代

切片,迭代
  • qq_27605099
  • qq_27605099
  • 2017年01月13日 20:44
  • 205
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:python学习笔记二:切片、迭代、迭代器与相关函数
举报原因:
原因补充:

(最多只允许输入30个字)