【python基础】python切片—如何理解[-1:],[:-1],[::-1]的用法
文章目录
- 前言
- 一、基本语法
- 二、切片
- 1.a[i:j]
- 2.a[i:j:k]
- 总结:[-1] [:-1] [::-1] [n::-1]
前言
在python中,序列是python最基本的数据结构,包括有string,list,tuple等数据类型,切片对序列型对象的一种索引方法,其中每个元素都有对应的位置值,具有正向递增(从0开始),反向递减(-1开始)的属性,根据此可以进行普通索引或切片索引。普通索引只取出列中一个下标对应的元素,而切片索引取出序列中一个范围对应的元素。本文主要讲对序列对象的切片索引。
一、基本语法
| 操作符 | 描述 |
|---|---|
| a[i] | 普通索引,返回序列 a 中第 i 个元素,i为序号 |
| a[i:j] | 切片,得到 a 序列中序号从 i 到 j(不包括 j )范围元素。 当 i 缺省时,默认为0 当 j 缺省时,默认为len(a) 当 i,j 均缺省时,默认为全部 |
| a[i:j:k] | 切片, 返回序列 a 中从序号 i 到 j (不包括 j ),以k为步长的元素子序列。 k>0,步长自左而右(正序);i 缺省时,默认为0,j 缺省时,默认为len(a) k<0,步长自右而左(倒序);i 缺省时,默认为-1,j 缺省时,默认为-len(a)-1 |
二、切片
1.a[i:j]
[1:3]:取第二、三个元素。
a=[10,20,30,40,50]
a[1:3]
#输出:[20, 30]

[1:-1]:取第二个到倒数第二个元素。
a=[10,20,30,40,50]
a[1:-1]
#输出:[20, 30, 40]

[-3:-1]:取倒数第三到倒数第二个元素。
a=[10,20,30,40,50]
a[-3:-1]
#输出:[30, 40]

- i,j 缺省
[:-1]:取第一个到倒数第二个元素。
a=[10,20,30,40,50]
a[:-1]
#输出:[10, 20, 30, 40]

[-1:]:j 缺省,为5,取最后一个元素。
a=[10,20,30,40,50]
a[-1:]
#输出:[50]

[3:]:j 缺省,为5,取第四个到最后一个元素。
a=[10,20,30,40,50]
a[3:]
#输出:[40, 50]

[:]:取出全部元素。
a=[10,20,30,40,50]
a[:]
#输出:[10, 20, 30, 40, 50]

2.a[i:j:k]
[1:6:2]:从左往右,步长2,范围从第二个元素开始到最后一个元素。
a=[10,20,30,40,50]
a[1:6:2]
#输出:[20, 40]

[-5:-2:2]:从左往右,步长2,范围从第一个元素开始到倒数第二个元素。
a=[10,20,30,40,50]
a[-5:-2:2]
#输出:[10, 30]

[-1:-6:-2]:从右往左,步长2,范围从最后一个元素开始到第一个元素。
a=[10,20,30,40,50]
a[-1:-6:-2]
#输出:[50, 30, 10]

- i,j,k 缺省情况
[ : : ]:i 默认为1,j 默认为6,k 默认为1,从左往右,取全部。
a=[10,20,30,40,50]
a[::]
#输出:[10, 20, 30, 40, 50]

[1: :2]:j 默认为6,从左往右,步长2,范围从第二个元素开始到最后一个元素。
a=[10,20,30,40,50]
a[1::2]
#输出:[20, 40]

[ :4:2]:i 默认为0,从左往右,步长2,范围从第一个元素开始到第四个元素。
a=[10,20,30,40,50]
a[ :4:2]
#输出:[10, 30]

[ : : -1]:i 默认为-1,j 默认为-6,从右往左,取全部,其实就是倒序。
a=[10,20,30,40,50]
a[::-1]
#输出:[50, 40, 30, 20, 10]

[-1: :-2]:k<0,j 默认为-6,从右往左,步长2,范围从最后一个元素开始到第一个元素。
a=[10,20,30,40,50]
a[-1::-2]
#输出:[50, 30, 10]

[ :-5:-2]:k<0,i 默认为-1,即从右往左,步长2,范围从最后一个元素开始到第二个元素。
a=[10,20,30,40,50]
a[:-5:-2]
#输出:[50, 30]

总结:[-1] [:-1] [::-1] [n::-1]
- [-1]:获取最后一个元素;
- [:-1]:除了最后一个元素,获取其他所有的元素;
- [::-1]:对第一个到最后一个元素进行倒序之后取出;
- [n::-1]:对第一个到第n个元素进行倒序后取出。
相关文章:
【python基础】python切片—如何理解[-1:],[:-1],[::-1]的用法
文章目录 前言一、基本语法二、切片1.a[i:j]2.a[i:j:k] 总结:[-1] [:-1] [::-1] [n::-1] 前言 在python中,序列是python最基本的数据结构,包括有string,list,tuple等数据类型,切片对序列型对象的一种索引方…...
剑指JUC原理-9.Java无锁模型
👏作者简介:大家好,我是爱吃芝士的土豆倪,24届校招生Java选手,很高兴认识大家📕系列专栏:Spring源码、JUC源码🔥如果感觉博主的文章还不错的话,请👍三连支持&…...
汽车托运使用的场景
在托运车辆时,要仔细的检查车辆的性能,比如电瓶电量是否充足,发动机的性能是否良好,轮胎是否是正常的气压,冬季时需使用防冻液,车内禁止放易燃易爆物品。 托运时还需选择一家好的托运公司,首先要…...
机器学习 - 加油站数据分析
一、实验数据 数据集:“加油站数据.xls” 数据集介绍:该表记录了用户在11月和12月一天24小时内的加油信息,包括:持卡人标识(cardholder)、卡号(cardno)、加油站网点号(n…...
基于CMFB余弦调制滤波器组的频谱响应matlab仿真
目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1、CMFB余弦调制滤波器组原理 4.2、CMFB调制过程 4.3、CMFB特点 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ......................…...
helm一键部署grafana
一键部署命令 helm repo add prometheus-community https://prometheus-community.github.io/helm-charts helm repo update helm install prometheus prometheus-community/kube-prometheus-stack暴露服务 kubectl port-forward --address 0.0.0.0 deployment/prometheus-gr…...
pytorch复现_NMS
NMS(非极大值抑制)阈值是用于控制在一组重叠的边界框中保留哪些边界框的参数。当检测或识别算法生成多个边界框可能涵盖相同物体时,NMS用于筛选出最相关的边界框,通常是根据它们的置信度分数。 具体来说,NMS的工作原理…...
备份doris数据到minio
1、MINIO 设置 创建服务账户,记住ACCESS_KEY和SECRET_KEY 创建Buckets doris 设置region 在首页查看服务ip和端口号 2、创建S3备份库 因为minio是兼容S3协议的,所以可以通过s3协议链接minio。 CREATE REPOSITORY minio WITH S3 ON LOCATION "s3://…...
Linux中正则表达式等
grep命令:主要作用就是过滤查找文本内容 常用的选项有: -m 数字:匹配几次之后停止,按行匹配,不是按字符个数,例如 -v:取反 例如: -n:显示匹配的行号 例如: -c:仅显示匹配的行数,不显示匹配内…...
记一次并发问题 Synchronized 失效
记一次并发问题 Synchronized 失效 场景:为避免信息提交重复,给事务方法增加了synchronized修饰符,实际场景中仍然无法完全避免重复,原因是因为在第一个线程执行完synchronized代码段后,此时spring还未完成事务提交&a…...
手机平板摄像头如何给电脑用来开视频会议
环境: Iriun Webcam EV虚拟摄像头 钉钉会议 问题描述: 手机平板摄像头如何给电脑用来开视频会议 解决方案: 1.下载软件 手机端和电脑端都下载这个软件,连接同一局域网打开软件连接好 另外一款软件Iriun 也是一样操作 2.打…...
windows docker desktop 更换镜像 加速
最近 docker hub 访问不了; 经过研究 可以通过添加 代理镜像网址 添加代理服务器的方式 实现完美访问 1添加镜像网站 修改成国内镜像地址就能享受到飞一般的速度,但有一个问题,部分站点镜像不全或者镜像比较老,建议使用多个镜像站。 https…...
linux下多机器ssh免密码登录配置
20,21,22,23等4台机器配置ssh免密登陆 确认sshd配置 查看/etc/ssh/sshd_config文件,确认如下配置没有被注释掉: AuthorizedKeysFile .ssh/authorized_keys每一台机器修改hosts配置主机名(可选) 执行ssh命令,如…...
【IDEA使用maven package时,出现依赖不存在以及无法从仓库获取本地依赖的问题】
Install Parent project C:\Users\lxh\.jdks\corretto-1.8.0_362\bin\java.exe -Dmaven.multiModuleProjectDirectoryD:\学习\projectFile\study\study_example_service "-Dmaven.homeD:\Program Files\JetBrains\IntelliJ IDEA2021\plugins\maven\lib\maven3" "…...
Flink 统计接入的数据量-滚动窗口和状态的使用
1、概述 在生产场景值,经常需要和上游、下游对数,离线场景可以直接 group by 再 count ,但是实时场景中,如果使用 kafka 作为中间件,中间经过几个 job 的过滤转化后,再对照像 Doris 或 Clickhouse 中最终层…...
SpringBoot快速整合canal1.1.5(TCP模式)
SpringBoot快速整合canal1.1.5(TCP模式) 安装并配置MySQL主从⭐ 1:Docker安装MySQL8.0.28 docker pull mysql:8.0.282:创建目录: mkdir -p /usr/local/mysql8/data mkdir -p /usr/local/mysql8/log mkdir -p /usr/…...
docker打包container成image,然后将image上传到docker hub
第一步:停止正在运行的容器 docker stop <container_name> eg: docker stop xuanjie_mlir 第二步:将对应的container打包成image docker commit <container_id> <镜像名:版本> eg:docker commit 005672e6d97a…...
设计模式—创建型模式之原型模式
设计模式—创建型模式之原型模式 原型模式(Prototype Pattern)用于创建重复的对象,同时又能保证性能。 本体给外部提供一个克隆体进行使用。 比如我们做一个SjdwzMybatis,用来操作数据库,从数据库里面查出很多记录&…...
Zygote进程通信为什么用Socket而不是Binder?
Zygote进程是Android系统中的一个特殊进程,它在系统启动时被创建,并负责孵化其他应用进程。它的主要作用是预加载和共享应用进程的资源,以提高应用启动的速度。 在Android系统中,常用的进程通信方式有以下几种: Intent…...
API接口加密,解决自动化中登录问题
一、加密方式 AES:对称加密,快RAS:非对称加密,慢AESRAS:安全高效 加密过程:字符串》字节流》加密的字节流(算法),解密有可能出现乱码,所以不能直接转成字符…...
HTML 语义化
目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案: 语义化标签: <header>:页头<nav>:导航<main>:主要内容<article>&#x…...
Spring Boot 实现流式响应(兼容 2.7.x)
在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...
Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...
基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...
关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...
cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...
React19源码系列之 事件插件系统
事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...
生成 Git SSH 证书
🔑 1. 生成 SSH 密钥对 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 参数说明: -t rsa&#x…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...
基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...
