python正向切片_使Python切片正常(正/正向+无无+无负索引+在边界内)
在Python中实现可以用标准Python语法进行切片的类(即负索引、单步执行等)时,有时可以将切片转换为“理智的、向前的切片”,以确定切片的元素。怎样才能以简洁/优雅的形式写出这样一个函数呢?在
对于“理智的、向前的切片”,我指的是一个与初始切片等效的切片,在这个意义上,结果元素是相同的,但是有一个正步长,没有负索引,也没有大于对象长度的索引。在
示例(假设数组长度为10):slice(None, 4,None) -> slice( 0, 4, 1)
slice( -7, 12, 1) -> slice( 3,10, 1)
slice(None,None, -1) -> slice( 0,10, 1)
slice( 7, 3, -2) -> slice( 5, 8, 2)
slice( 9, 1, -3) -> slice( 3,10, 3)
编写一个执行这种转换的函数并不是非常困难,但我不能编写得简洁明了。尤其是在将“向后切片”转换为等效的“向前切片”时确定起始索引似乎相当麻烦。在
工作示例:
^{pr2}$
.
.
. 在
编辑(最终功能):
通过使用slice.indices(),@doublep善意地指向我,它变成了:def to_sane_slice(s, N):
# get rid of None's, overly large indices, and negative indices (except -1 for
# backward slices that go down to first element)
start, stop, step = s.indices(N)
# get number of steps & remaining
n, r = divmod(stop - start, step)
if n < 0 or (n==0 and r==0):
return slice(0,0,1)
if r != 0: # its a "stop" index, not an last index
n += 1
if step < 0:
start, stop, step = start+(n-1)*step, start-step, -step
else: # step > 0, step == 0 is not allowed
stop = start+n*step
stop = min(stop, N)
return slice(start, stop, step)
python正向切片_使Python切片正常(正/正向+无无+无负索引+在边界内)相关推荐
- python怎么后退_使python迭代器向后退?
无论如何,要使python列表迭代器向后移动? 基本上我有这个 class IterTest(object): def __init__(self, data): self.data = data s ...
- python反转列表不用切片_关于python:使用切片表示法反转列表
在下面的例子: foo = ['red', 'white', 'blue', 1, 2, 3] 在所有的元素:将打印foo[0:6:1]foo.然而,foo[6:0:-1]将omit 0th首届欧元. ...
- python 时间序列预测_使用Python进行动手时间序列预测
python 时间序列预测 Time series analysis is the endeavor of extracting meaningful summary and statistical ...
- python 概率分布模型_使用python的概率模型进行公司估值
python 概率分布模型 Note from Towards Data Science's editors: While we allow independent authors to publis ...
- python 三维图片 任意切片_在python中实现将一张图片剪切成四份的方法
import cv2 # [1]导入OpenCv开源库 import numpy as np image_path = "F:11111111111111111111111111111100 ...
- python数字切片_剖析python切片「:」「::-1」「-1::」
剖析python切片[:][::-1][-1::] 我们在面试python相关职位时,总是会碰到一些面试python切片的试题,另外在解决某些问题时也经常会用到切片操作,因此勇哥在这里给大家详细介绍p ...
- python中iloc切片_如何使用iloc和loc 对Pandas Dataframe进行索引和切片
Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 在这篇文章中,我们将使用iloc和loc来处理数据.更具体地说,我们将通过iloc和loc例子来学习切片和 ...
- python高斯求和_利用Python进行数据分析(3)- 列表、元组、字典、集合
本文主要是对Python的数据结构进行了一个总结,常见的数据结构包含:列表list.元组tuple.字典dict和集合set. image 索引 左边0开始,右边-1开始 通过index()函数查看索 ...
- python培训班-Python培训机构_高品质Python线下开发培训班推荐-黑马程序员
Python编程基础基础班1 课时:15天技术点:97项测验:2次学习方式:线下面授 学习目标 1.掌握Python开发环境基本配置|2.掌握运算符.表达式.流程控制语句.数组等的使用|3.掌握字符串 ...
最新文章
- 服务器安全配置之注册表设置
- 程序员面试题精选100题(02)-设计包含min函数的栈[数据结构]
- 重置SVN用户名与密码,修改SVN的IP地址
- Codeforces Round #325 (Div. 2) Laurenty and Shop 模拟
- java计算二叉树的节点最小值_java计算二叉树的高度以及叶节点个数
- Cygwin,Nutch安装配置,检验是否正确(对网友守望者博客的修改---在此感谢守望者)2
- springBoot 登录拦截器
- java连接oracle数据库 -- jdbc连接
- Delphi unit单元文件结构
- Nokia Booklet 3G试用小记
- python创意小作品-[专题]在Python教学中应用turtle创意编程实践
- MATLAB--四种取整函数
- 《精通linux设备驱动程序开发》——USB
- 计算机毕业设计ssm高校学报管理系统lt10k系统+程序+源码+lw+远程部署
- 由浅入深学java pdf_由浅入深学Java:基础、进阶与必做260题 PDF_IT教程网
- 滑动时固定在头部的一部分会变色(向下滑会变红)
- 使用Python画小猪佩奇(turtle库)
- docker挂载mysql会失败_Docker Mysql 挂载 /var/lib/mysql 后无法启动
- 修改 nginx 的默认端口
- 谷粒学院day09——课程发布与阿里云视频点播服务
热门文章
- bootstrap 导航菜单 折叠位置_python测试开发django44.xadmin自定义菜单项
- mysql 命令desc tables_oracle中与mysql中的命令 show databases, show tables, desc table类似的命令集...
- 电脑上我的文档图标不见了怎么办
- 微软推行 Windows 10 更新政策 往后不会太强硬要求升级!
- 嵌入式linux 配置usb otg,嵌入式linux系统环境下USB设备的驱动实现
- python数字对应车站_python爬虫查询车站信息
- 二级c语言笔试58,全国计算机等级考试-二级C语言笔试试题.doc
- matlab中有哪些输出函数,MATLAB中查找并输出的函数有什么
- c# 计算机ip,C# 获取电脑的IP,网关,MAC,计算机名。。
- java xms512m_安装版的tomcat设置JAVA_OPTS=-Xms128M -Xmx512M -XX:PermSize=128M -XX:MaxPermSize=512M...