当前位置: 首页 > news >正文

python切片(彻底解除对切片的曲解)

sequence[start:stop:step]
**start: **step为正时默认为0,step为负时默认为-1
stop:_ step为正时默认为结尾结束,step为负时默认为开始位置_

ss=“abcdefg”
以该字符串举例,ss[start:stop:step]的意思是将字符串ssstart开始截取(包括start),截取到stop(不包括stop),step为截取的步长(step的符号为截取方向,正则从左到右,负则从右到左)

下面是几个例子:
ss=‘abcdefg’
print(ss[::]) 输出abcdefg start=0, stop=len(ss) ,step=1
print(ss[::-1]) 输出gfedcba start=-1 ;stop=第一位的前一位; step=-1
值得注意的是,start和stop的值为负时,代表倒数第几位的数,如上面start=-1代表从倒数第一个数开始截取

下面几个例子说明了序列下标为负时的含义(并未用到切片,不是默认了stop和step)
print(ss[-1]) # g 倒数第一个元素
print(ss[-3]) # e 倒数第三个元素
print(ss[-len(ss)]) # a 倒数第len(ss)个元素,也是第一个元素
print(ss[-(len(ss)+1)]) #越界了,报错:string index out of range

须知,ss[1]并不代表stop和step取默认值后对ss字符串的截取,而仅仅代表返回ss字符串下标为1的元素,stop和step取默认值后对ss字符串的截取应该写作ss[1: :]
print(ss[1]) # b
print(ss[1::]) #bcdefg

切片截取出现空串的情况:

首先须知的几点:
1、step为正时,从左向右遍历,为负时从右向左遍历,起点皆为start
2、无论start和stop各自取正或负,无论start>stop或start<=stop,截取的方向永远是从start到stop
3、当step代表的遍历方向与start到stop的方向相反时,会截取到空串
那么问题来了,如何判断start到stop的方向(从左到右 or 从右到左)?
一个误区是比较start和stop的值的大小,由它们在数轴上的大小来判断顺序,这是不对的
同样以字符串ss=‘abcdefg’为例:
s[-1:3: ] #截取方向为从右到左,start=-1,stop=-2
s[3:-2: ] #截取方向为从左到右, start=3,stop=-2
我们可以看到
在s[-1:3: ] 中,虽然start<stop,但截取方向确是从右到左
在s[3:-2: ] 中, 虽然start>stop,但截取方向确是从左到右
所以可以说,截取方向与start和stop值的大小比较无关系,而是与ss[start]和ss[stop]代表的元素的位置先后顺序有关,
如:在s[-1:3: ]中,s[-1]代表倒数第一个元素’g’(也就是第七个元素),s[3]代表第四个元素’d’,start代表的元素在stop代表的元素之后,因此由start截取到stop是从后到前(也就是从右到左)

下面是几个截取到空串的例子:

ss='abcdefg'print("=="

相关文章:

python切片(彻底解除对切片的曲解)

sequence[start:stop:step] **start: **step为正时默认为0,step为负时默认为-1 stop:_ step为正时默认为结尾结束,step为负时默认为开始位置_ ss=“abcdefg” 以该字符串举例,ss[start:stop:step]的意思是将字符串ss从start开始截取(包括start),截取到stop(不包括sto…...

Java—— StringBuilder 和 StringBuffer

1.介绍 由于String的不可更改特性&#xff0c;为了方便字符串的修改&#xff0c;Java中又提供了StringBuilder和Stringbuffer类&#xff0c;这两个类大部分功能是相同的&#xff0c;以下为常用方法&#xff1a; public static void main(String[] args) {StringBuilder sb1 n…...

vs2019 c++20 规范 STL库中关于时间的模板

在学习线程的时候&#xff0c;一些函数会让线程等待或睡眠一段时间。函数形参是时间单位&#xff0c;那么在 c 中是如何记录和表示时间的呢&#xff1f;以下给出模板简图&#xff1a; 谢谢...

激光焊接机作为一种高效、精密的焊接设备

激光焊接机是一种用于材料加工时激光焊接的机器&#xff0c;以下是对其的详细介绍&#xff1a; 1. 定义与别称&#xff1a; 激光焊接机&#xff0c;又常称为激光焊机、镭射焊机&#xff0c;是材料加工激光焊接时用的机器。 2. 工作原理&#xff1a; 激光焊接是利用高能量…...

vite为什么速度快

原因 vite快的原因是因为 vite在开发环境中是使用的 esbuild&#xff0c;esbuild 是 go 写的&#xff0c;go 编译型语言、多线程&#xff0c;nodejs 解释型语言、单线程&#xff0c;并且 vite 使用了原生 esm 导入的&#xff0c;所以快一点&#xff0c;当然&#xff0c;这也…...

Java网络编程(下)

White graces&#xff1a;个人主页 &#x1f649;专栏推荐:Java入门知识&#x1f649; &#x1f649; 内容推荐:Java网络编程&#x1f649; &#x1f439;今日诗词:姑苏城外寒山寺&#xff0c;夜半钟声到客船&#x1f439; ⛳️点赞 ☀️收藏⭐️关注&#x1f4ac;卑微小博主…...

APISIX的安装与测试(springboot服务测试)

安装&#xff1a; 1.1安装依赖&#xff1a; curl https://raw.githubusercontent.com/apache/apisix/master/utils/install-dependencies.sh -sL | bash -1.2 安装 OpenResty yum-config-manager --add-repo https://openresty.org/package/centos/openresty.reposudo yum i…...

AI技术:探索未来智能的无限可能

随着科技的飞速发展&#xff0c;人工智能&#xff08;AI&#xff09;技术已经成为我们这个时代最引人瞩目的科技力量。从简单的自动化任务到复杂的决策支持系统&#xff0c;AI技术正在以前所未有的速度改变着我们的世界。本文将深入探讨AI技术的定义、发展历程、当前应用、面临…...

npm install 出错,按照版本不匹配解决

一、现象 npm install npm WARN config global --global, --local are deprecated. Use --locationglobal instead. npm ERR! code ERESOLVE npm ERR! ERESOLVE unable to resolve dependency tree npm ERR! npm ERR! While resolving: panshi-main-web0.1.0 npm ERR! Found…...

【第1章】SpringBoot实战篇之注册接口

文章目录 前言一、代码部分1. User2.UserMapper13. UserSerivce4. UserController15. Result 二、测试1.注册2.再次注册 总结 前言 下面介绍用户注册接口。 一、代码部分 1. User package org.example.springboot3.bigevent.entity;import com.baomidou.mybatisplus.annotat…...

代码随想录-Day25

216.组合总和III 找出所有相加之和为 n 的 k 个数的组合&#xff0c;且满足下列条件&#xff1a; 只使用数字1到9 每个数字 最多使用一次 返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次&#xff0c;组合可以以任何顺序返回。 示例 1: 输入: k 3, n 7 输…...

JavaWeb_SpringBootWeb基础

先通过一个小练习简单了解以下SpringBootWeb。 小练习&#xff1a; 需求&#xff1a;使用SpringBoot开发一个Web应用&#xff0c;浏览器发起请求/hello后&#xff0c;给浏览器返回字符串"Hello World~"。 步骤&#xff1a; 1.创建SpringBoot项目&#xff0c;勾选We…...

Stable Diffusion生成图片的参数查看与抹除方法

前几天分享了几张Stable Diffusion生成的艺术二维码&#xff0c;有同学反映不知道怎么查看图片的参数信息&#xff0c;还有的同学问怎么保护自己的图片生成参数不会泄露&#xff0c;这篇文章就来专门分享如何查看和抹除图片的参数。 查看图片的生成参数 1、打开Stable Diffus…...

Linux下多线程的相关概念

&#x1f916;个人主页&#xff1a;晚风相伴-CSDN博客 &#x1f496;如果觉得内容对你有帮助的话&#xff0c;还请给博主一键三连&#xff08;点赞&#x1f49c;、收藏&#x1f9e1;、关注&#x1f49a;&#xff09;吧 &#x1f64f;如果内容有误或者有写的不好的地方的话&…...

在java java.util.Date 已知逝去时间怎么求年月日

在java中&#xff0c;可以使用java.util.Date类来获取年、月和日。以下是一种方法&#xff1a; 首先创建一个java.util.Date对象&#xff0c;表示逝去的时间。 Date pastDate new Date(逝去的时间的毫秒数);然后使用java.util.Calendar类来获取年、月和日。 Calendar calen…...

LeetCode 2928.给小朋友们分糖果 I:Java提交的运行时间超过了61%的用户

【LetMeFly】2928.给小朋友们分糖果 I&#xff1a;Java提交的运行时间超过了61%的用户 力扣题目链接&#xff1a;https://leetcode.cn/problems/distribute-candies-among-children-i/ 给你两个正整数 n 和 limit 。 请你将 n 颗糖果分给 3 位小朋友&#xff0c;确保没有任何…...

【typescript/flatbuffer】在websocket中使用flatbuffer

目录 说在前面场景fbs服务器代码前端typescript代码问题 说在前面 操作系统&#xff1a;Windows11node版本&#xff1a;v18.19.0typescript flatbuffer版本&#xff1a;24.3.25 场景 服务器(本文为golanggin)与前端通信时使用flatbuffer进行序列化与反序列化通信协议为websock…...

构建一个文字冒险游戏:Python 编程实战

在本文中&#xff0c;我们将探索如何使用 Python 创建一个简单的文字冒险游戏。通过这个项目&#xff0c;你将了解到基础的编程技术&#xff0c;包括条件语句、函数和基本的用户输入处理&#xff0c;同时也能体会到文本游戏的魅力和设计的挑战。 项目概述 文字冒险游戏是一种…...

09Linux GDB学习笔记

Linux GDB使用 目录 文章目录 Linux GDB使用先编译文件1.检查安装1.1 安装GDB 2.启动GDB3.退出GDB4.设置断点4.1 在指定行号处设置断点4.2 在指定函数名处设置断点4.3 在指定源文件和行号处设置断点 4.4查看断点信息4.5删除断点5.运行5.1 <font color#ff0000>逐过程&am…...

海外金融牌照

一般来说牌照申请分两个大类&#xff1a;数字货币牌照和外汇牌照。每个国家的牌照具体监管的情况也是不一样的。申请牌照时该如何选择&#xff1f; 今天先说说区块链牌照&#xff0c;具有代表性的有美国msb牌照&#xff0c;加拿大msb牌照&#xff0c;爱沙尼亚数字货币牌照&…...

终极指南:如何免费解锁Cursor Pro完整功能 - 突破AI编辑器限制的完整方案

终极指南&#xff1a;如何免费解锁Cursor Pro完整功能 - 突破AI编辑器限制的完整方案 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youv…...

Solidworks PDM二次开发实战:文件夹权限与数据卡配置详解

1. Solidworks PDM二次开发入门指南 如果你正在使用Solidworks PDM管理产品数据&#xff0c;可能会遇到需要批量创建文件夹并设置权限的场景。比如新项目启动时&#xff0c;需要为不同部门创建标准化的文件夹结构&#xff0c;同时设置工程师只读、管理员完全控制的权限规则。手…...

告别内置ADC的烦恼:用ADS1119搞定STM32/DSP的高精度电压采样(附完整代码)

告别内置ADC的烦恼&#xff1a;用ADS1119搞定STM32/DSP的高精度电压采样&#xff08;附完整代码&#xff09; 在嵌入式系统开发中&#xff0c;电压采样是基础却至关重要的环节。许多工程师在使用STM32或DSP内置ADC时&#xff0c;常会遇到精度不足、抗干扰能力差、无法测量差分信…...

终极解密指南:Windows平台NCM音频文件一键转换实战

终极解密指南&#xff1a;Windows平台NCM音频文件一键转换实战 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换&#xff0c;Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾因网易云音乐的NCM加密格式而烦恼&…...

深度解析:Performance-Fish如何通过四级缓存架构实现《环世界》400%性能优化

深度解析&#xff1a;Performance-Fish如何通过四级缓存架构实现《环世界》400%性能优化 【免费下载链接】Performance-Fish Performance Mod for RimWorld 项目地址: https://gitcode.com/gh_mirrors/pe/Performance-Fish Performance-Fish是《环世界》&#xff08;Rim…...

Arm Neoverse CMN-700互连架构与协议寄存器配置指南

1. Arm Neoverse CMN-700一致性互连架构解析在现代多核处理器设计中&#xff0c;一致性互连网络如同城市交通系统般重要。Arm Neoverse CMN-700作为第二代Coherent Mesh Network解决方案&#xff0c;其架构设计充分考虑了数据中心和边缘计算的严苛需求。与传统的总线或环形拓扑…...

LLM应用快速演示框架:从架构解析到智能体开发的实战指南

1. 项目概述&#xff1a;一个面向开发者的LLM应用快速演示框架最近在GitHub上闲逛&#xff0c;发现了一个名为wronai/llm-demo的项目&#xff0c;点进去一看&#xff0c;瞬间觉得眼前一亮。这可不是又一个简单的“Hello World”式的大语言模型调用示例&#xff0c;而是一个结构…...

飞书自动化开发实战:从脚本编写到事件驱动架构设计

1. 项目概述&#xff1a;飞书自动化&#xff0c;从“手动挡”到“自动驾驶”的进化 如果你每天的工作&#xff0c;有超过30%的时间是在飞书里重复着“点击-填写-发送”的枯燥操作&#xff0c;比如手动拉取数据生成日报、定时向群聊推送消息、或者根据特定条件审批流程&#xf…...

OpenClaw实战教程:声明式配置驱动的高效数据抓取方案

1. 项目概述&#xff1a;一个关于“OpenClaw”的实战教程 最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“OpenClawTuto”。光看名字&#xff0c;你可能会有点摸不着头脑&#xff0c;这“OpenClaw”到底是个啥&#xff1f;是某种开源机械爪&#xff1f;还是一个代号&…...

AI智能体GUI交互实战:从原理到实现,让AI玩转桌面应用

1. 项目概述&#xff1a;一个能“玩”游戏的AI智能体最近在AI智能体&#xff08;Agent&#xff09;的圈子里&#xff0c;一个名为“ChattyPlay-Agent”的开源项目引起了我的注意。乍一看名字&#xff0c;你可能会觉得它又是一个基于大语言模型&#xff08;LLM&#xff09;的聊天…...