# yield列表反转 islice切片
### 列表反转
```python
l1 = [i for i in range(10)]
print(l1)
print(l1[::2])
l1.reverse()
# 注: python2里列表reverse是返回一个新的列表
print(l1)
print(l1[::-1])
for x in reversed(l1):
print(x)
```
output:

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

实际上,for循环要求l1有这个函数, __iter__ 反向循环reveresd要求l1有__reveresd__

l1.__iter__()
l1.__reversed__()

自己实现一个可以反转的列表

class FloatRange:
def __init__(self, start, end, step):
self.start = start
self.end = end
self.step = step def __iter__(self):
res = self.start
while res <= self.end:
yield res
res += self.step def __reversed__(self):
res = self.end
while res >= self.start:
yield res
res -= self.step for i in FloatRange(1, 10, 0.5):
print(i)
print('#============')
for i in reversed(FloatRange(1, 10, 0.5)):
print(i)

本文和前文有很多yiled的例子,也讲了读文件的分片,介绍一个可以分片的函数 itertools.islice

islice(iter, start=0, end, step=1)

# 运行这个代码可以看到with 0和1输出相同
# f 0 1输出不同,是因为islice会消耗iter
from itertools import islice
print("#======with 0======\n\n")
with open('2.5生成器.md', 'r') as f:
for i in islice(f, 100, 110):
print(i)
print("#======with 1======\n\n")
with open('2.5生成器.md', 'r') as f:
for i in islice(f, 100, 110):
print(i) print("#======f 0======\n\n")
# 对同一个f进行操作
f = open('2.5生成器.md', 'r')
for i in islice(f, 0, 10):
print(i)
print("#======f 1======\n\n")
for i in islice(f, 0, 10):
print(i)

简单的例子展示islice消耗iter

l = range(10)
l = iter(l)
for i in islice(l, 0, 5, 2):
print(i) print('一直输出到结束')
for i in islice(l, 0, None):
print(i)

output:

0
2
4
一直输出到结束
5
6
7
8
9

yield列表反转 islice切片(2.6)的更多相关文章

  1. FAQ1: 列表索引和切片问题

    问题1. 超过列表成员个数的索引访问列表会出现IndexError错误,但是如果用切片去访问就不会报错,而是返回一个空列表.同样元组也是. >>> a=[1,2,3,4] >& ...

  2. python列表反转

    使用reverse来让列表反转特别方便, 没事自己写了几种方式 In [59]: def reverse(nums): length = len(nums) for i in range(length ...

  3. 列表的初识,列表的索引切片,列表的增删改查,列表的嵌套,元组的初识,range

    1 内容总览 列表的初识 列表的索引切片 列表的增删改查 列表的嵌套 元组的初识(了解) 元组的简单应用(了解) range 2 具体内容 列表的初识 why: str: 存储少量的数据.切片出来全都 ...

  4. python 列表反转

    反转: 将原列表反转,返回None: li = [1, 2, 3]li.reverse()print(li)# [3, 2, 1]1234不改变原列表,返回反转后的新列表: li = [1, 2, 3 ...

  5. Python 列表反转显示方法

    第一种,使用reversed 函数,reversed返回的结果是一个反转的迭代器,我们需要对其进行 list 转换 listNode = [1,2,3,4,5] newList = list(reve ...

  6. Java数组列表反转

    在Java中,如何反转数组列表中的元素? 以下示例使用Collections.reverse(ArrayList)方法反转数组列表中的元素. package com.yiibai; public cl ...

  7. 列表:list[1],切片list[1:3],追加insert,修改,删除remove,del,pop,查找index,统计count,清空list.clear() 翻转list.reverse(),排序list.sort(),扩展list.extend,

    列表的定义: 列表的使用以及取值:用逗号的方式,取列表两个值,会打印出2个项目,两个项目之间自动有一个空格. 如果想取中间几个值: 请注意,如果取值1和2,那么要写[1,3],要记住这里是顾头不顾尾. ...

  8. python的反转(切片)

    看下面代码吧,简单来说不如直接看代码.如下: #coding=utf-8 __author__ = 'debude' a = 'python' print a[::-1] #从最后n开始,每走一位都打 ...

  9. 列表的使用2,深COPY和浅COPY,循环列表,步长切片

    name2=names.copy() 下面我看几种奇怪的现象: 首先把源列表copy以后,把源列表第2个数值修改.那么没毛病. 如果源列表里,还包含了一个子列表:这也没毛病 如果我们这个时候修改子列表 ...

随机推荐

  1. implements Serializable有什么作用

    转自 http://blog.csdn.net/dinghqalex/article/details/46009911

  2. 极简Vue的异步组件函数

    export default new Router({ routes: [ { path: '/live', name: 'live', component: () => import('@/v ...

  3. HTML-参考手册: HTML 事件属性

    ylbtech-HTML-参考手册: HTML 事件属性 1.返回顶部 1. HTML 事件属性 全局事件属性 HTML 4 的新特性之一是可以使 HTML 事件触发浏览器中的行为,比方说当用户点击某 ...

  4. Jmeter 5.1命令行执行bat文件

    一.编写run_jmeter,bat @echo off::设置参数::参考命令:jmeter -n -t d:\123.jmx -l result.jtl -e -o d:\report\repor ...

  5. IIS发布获取apk文件,部署IIS遇到的问题记录

    今天需要帮着测试一下PDA的检测更新功能,所以需要把web部署到IIS上. 在部署的时候,遇到了两个小问题. 一.web 服务器被配置为不列出此目录的内容. 解决办法:1.按照提示的可尝试操作,启用了 ...

  6. mysql 5.7.20 从frm文件中得到建表语句 (使用 mysql-utilities)

    系统环境  centos 7.2    mysql社区版 5.7.20 mysql-utilities 根据官网的说法,截止到2018年5月30日,实用工具的一些功能在Shell的路线图中,鼓励用户迁 ...

  7. 关于JS递归函数求斐波那契数列两种实现方法

    百度已经解释的很详细了,但是不写注释还真是看不懂,递归,就直接套公式了,for循坏,我们就用EXCEL看一下规律 可以看到B是A+B的和,A往后就是B的值,所以我们需要第三个变量来保存他们的和,取出B ...

  8. tomcat+nginx 单机部署多应用LINUX

    1.首先虚拟机上安装nginx 和tomcat,这里安装就不赘述了. nginx安装可以参考https://www.linuxidc.com/Linux/2016-09/134907.htm,相关配置 ...

  9. this 的指向问题

    1.全局作用域或者普通函数中 this 指向全局对象 window ( 定时器里面的this 指向 window ) 1.1 console.log(this); // window 1.2 func ...

  10. dubbo-源码阅读之服务发布

    原理 dubbo根据spring 2.0的schma实现 解析xml并初始化相关bean 初始化dubbo:service为ServiceBean实例  通过spring的生命周期相应回调实现服务发布 ...