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

Python基础教程:索引和切片

前言

嗨喽,大家好呀~这里是爱看美女的茜茜呐

索引(下标)

索引又称下标,用来表示可迭代对象中的某个元素的位置。

用正整数表示的索引值,从左向右定位,从 0 开始计数,如 0,1,2

用负整数表示的索引值,从右向左定位,从 -1 开始计数,如 -1,-2,-3

例如:

name = "meet" # 计算机从0开始数#0123 (索引值|下标值) 从左向右#-4-3-2-1           从右向左print(name[2])   # 通过索引准确定位内容
print(name[-4])  # 通过索引准确定位内容

输出的结果为:

e
m

👇 👇 👇 更多精彩机密、教程,尽在下方,赶紧点击了解吧~

python源码、视频教程、插件安装教程、资料我都准备好了,直接在文末名片自取就可


切片

有这样一个字符串:meet_alex_wusir,我们想要把其中的 alex 取出来,该怎么做呢?

一个可行的方法是,分别用 a、l、e 和 x 的索引值,把它们分别取出来,

再利用字符串的 加和 操作把它们拼接起来,就像这样:

'''
Python学习交流,免费公开课,免费资料,
免费答疑,系统学习加QQ群:261823976
'''
name = "meet_alex_wusir"
a = name[5] # 取出a
b = name[6] # 取出l
c = name[7] # 取出e
d = name[8] # 取出x
print(a + b + c + d) # 拼接并打印字符串

当然也可以通过循环的方法来取出相应的字符,然后拼接成新的字符串:

name = "meet_alex_wusir"
i = 5
s = ''
while i <= 8:s += name[i]i += 1
print(s)

因为这样的循环在 Python 中非常常用,所以被封装成为了一种简便的方法,就是字符串的 切片。

切片的基本格式和使用方法如下:

name = "meet_alex_wusir"# 0123456789
print(name[5:9])  # [起始位置:终止位置]  顾头不顾腚(起始位置保留,终止位置不保留)
print(name[-5:])  # [起始位置:终止位置(默认到结尾)]  顾头不顾腚
print(name[:])  # [起始位置(默认从开头):终止位置(默认到结尾)]  顾头不顾腚

输出的结果为:

alex
wusir
meet_alex_wusir

关于切片的终止位置的选择,还有一个技巧是:终止位置 = 起始位置 + 切片长度。

例如上面的例子中,起始位置为 5,切片长度为 4,终止位置为 5 + 4 = 9。

有的时候我们并不想要一个一个取字符,而是要隔一个字符取一个。

比如对于上面 “meet_alex_wusir” 的例子,我们想要取第 3、5、7 位的 e、_、l,该如何操作呢?

我们依旧可以使用最原始的,分别取值,然后拼接字符串的方法:

'''
Python学习交流,免费公开课,免费资料,
免费答疑,系统学习加QQ群:261823976
'''
name = "meet_alex_wusir"
a = name[2]
b = name[4]
c = name[6]
print(a + b + c)

这种方法确实能得到我们想要的结果,但是太过繁琐。

如果我们想要处理很长的字符串,就会非常麻烦了。

这就需要我们在切片时引入 步长 变量。

步长 是使用切片方法的第三个参数,默认值为 1。

对于上面的例子,我们可以设置 步长 为 2:

name = "meet_alex_wusir"#0123456789#-6-5-4-3-2-1
print(name[2:7:2])  #[起始位置:终止位置:步长(默认为1)]

如果我们把步长设置成 -1,可以实现从右向左查找:

name = "meet_alex_wusir"
print(name[-1:3:-1])  # 步长可以控制查找方向

输出的结果为:

risuw_xela_

在进行索引操作时,如果输入的参数超过最大索引值时,程序会报错。

而在进行切片操作时,如果终止位置超出最大索引值时,程序不会报错,而是会走到字符串的结尾:

name = "meet_alex_wusir"
print(name[2:20:2])

输出的结果为:

e_lxwsr

需要注意的是,索引和切片只能给有序数据(字符串、列表、元组)使用。

整型和布尔值等均不可以用来进行索引和切片操作。

同整型一样,字符串也是一个不可变的数据类型:

'''
Python学习交流,免费公开课,免费资料,
免费答疑,系统学习加QQ群:261823976
'''
name = "meet"
print(id(name)) 
name = name + "最帅了"
print(id(name)) 

在 Python 中,对于字符串的赋值,还会有这样一个有趣的情况:

name = "meet"
name1 = "meet"
print(id(name)) 
print(id(name1)) 

明明是两次赋值,两个字符串的内存地址居然是相同的。

这是因为 Python 中有一个小数据池,小数据会驻留。

在小数据驻留期间对相同的数据有新的赋值操作,不会新开辟一个内存空间,而是将变量指向已有数据的内存地址。

小数据池机制是为了节省内存空间。

尾语

感谢你观看我的文章呐~本次航班到这里就结束啦 🛬

希望本篇文章有对你带来帮助 🎉,有学习到一点知识~

躲起来的星星🍥也在努力发光,你也要努力加油(让我们一起努力叭)。

最后,宣传一下呀~👇👇👇更多源码、资料、素材、解答、交流皆点击下方名片获取呀👇👇

相关文章:

Python基础教程:索引和切片

前言 嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 索引&#xff08;下标&#xff09; 索引又称下标&#xff0c;用来表示可迭代对象中的某个元素的位置。 用正整数表示的索引值&#xff0c;从左向右定位&#xff0c;从 0 开始计数&#xff0c;如 0&#xff0c;1&#…...

JVM基础面试题

JDK、JRE、JVM的关系 JVM Java虚拟机&#xff0c;它只识别.class类型文件&#xff0c;它能将class文件中的字节码指令进行识别并调用操作系统向上的API完成动作。 JRE Java运行时环境。它主要包含两部分&#xff1a;Jvm的标准实现和Java的一些基本类库。相对于JVM来说,JRE多出来…...

蓝桥杯官网填空题(平方末尾)

题目描述 本题为填空题&#xff0c;只需要算出结果后&#xff0c;在代码中使用输出语句将所填结果输出即可。 能够表示为某个整数的平方的数字称为“平方数” 虽然无法立即说出某个数是平方数&#xff0c;但经常可以断定某个数不是平方数。 因为平方数的末位只可能是&#x…...

深入探究数据结构与算法:构建强大编程基础

文章目录 1. 为什么学习数据结构与算法&#xff1f;1.1 提高编程技能1.2 解决复杂问题1.3 面试准备1.4 提高代码效率 2. 学习资源2.1 经典教材2.2 在线学习平台2.3 学习编程社区 3. 数据结构与算法的实际应用3.1 排序算法3.2 图算法3.3 字符串匹配算法 4. 结论 &#x1f389;欢…...

Android 自定义View之圆形进度条

很多场景下都用到这种进度条&#xff0c;有的还带动画效果&#xff0c; 今天我也来写一个。 写之前先拆解下它的组成&#xff1a; 底层圆形上层弧形中间文字 那我们要做的就是&#xff1a; 绘制底层圆形&#xff1b;在同位置绘制上层弧形&#xff0c;但颜色不同&#xff…...

力扣(LeetCode)算法_C++——字母异位词分组

给你一个字符串数组&#xff0c;请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 示例 1: 输入: strs [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”] 输出: [[“bat”],[“nat”,“tan”…...

【LeetCode-中等题】59. 螺旋矩阵 II

文章目录 题目方法一&#xff1a;二维数组缩圈填数字方法二&#xff1a; 题目 方法一&#xff1a;二维数组缩圈填数字 定义四个边界条件&#xff0c;每转一圈&#xff0c;把数值填进去&#xff0c;然后缩小一圈&#xff0c;直到不满足条件位置 结束循环条件可以是&#xff1a; …...

错误: 找不到或无法加载主类 Main

在用git回退到上个版本后发现&#xff0c;无法运行项目并提示 错误: 找不到或无法加载主类 Main 可以看到Main前面的图标也是号。 查了半天没有解决&#xff0c;问了个大佬&#xff0c;大佬一下就解决掉了&#xff0c;本文记录下解决过程。 错误原因是编辑器无法找到代码位置&…...

【云原生】Kubeadmin安装k8s集群

目录 前言&#xff1a; 一 环境部署 1.1 服务器部署功能 1.2 环境准备&#xff08;所有节点&#xff09; 二 安装docker&#xff08;所有节点&#xff09; 三 所有节点安装kubeadm&#xff0c;kubelet和kubectl 3.1 定义kubernetes源 3.2 开机自启kubelet 四 部署K8S集…...

Java:Springboot和React中枚举值(数据字典)的使用

目录 1、开发中的需求2、实现效果3、后端代码4、前端代码5、接口数据6、完整代码7、参考文章 1、开发中的需求 开发和使用过程中&#xff0c;通常会涉及四个角色&#xff1a;数据库管理员、后端开发人员、前端开发人员、浏览者 数据库使用int类型的数值进行存储&#xff08;e…...

git撤回 不小心 commit 进去的文件

我时候 我们可能讲一下不想提交的文件 不小心commit了进去 我们可以通过 git reset HEAD~来撤回刚才的添加记录...

qt之movetothread理解

基础概念 qt的下线程qthread&#xff0c;每个线程都有自己的事件循环exec。对象的线程上下文&#xff0c;每个对象都有自己的线程上下文&#xff0c;怎么理解呢&#xff0c;就是该对象在哪个线程创建&#xff0c;其线程上下文就是谁。每个qobject对象在创建时都有包含线程成员…...

深入剖析:垃圾回收你真的了解吗?

小熊学Java&#xff1a;https://www.javaxiaobear.cn/ 本文我们重点剖析 JVM 的垃圾回收机制。关于 JVM 垃圾回收机制面试中主要涉及这三个考题&#xff1a; JVM 中有哪些垃圾回收算法&#xff1f;它们各自有什么优劣&#xff1f; CMS 垃圾回收器是怎么工作的&#xff1f;有哪…...

ue5 物理场的应用

cable mat wpo particle 流体粒子 choas 破损 刚体 布料 cloud abp blueprint riggedbody 体积雾 毛发 全局的 局部的 非均匀的 连续变化的 也可以多个叠加 从全局 到 范围 除了vector还有scalar的值也就是0--1的黑白灰的值 但是最终输出的值的类型还是取决于这个 一…...

移动零00

题目链接 移动零 题目描述 注意点 将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序必须在不复制数组的情况下原地对数组进行操作 解答思路 采用双指针的思路&#xff0c;左指针指向已移动零的数组的尾部&#xff0c;右指针指向为移动零的数组的头部&…...

go初识iris框架(四) -框架设置操作

前言 iris(1) iris(2) iris(3) 框架设置操作 当我们的一个路径是xxx/user/info,xxx/user/login,xxx/user/register的时候,我们发现前面都有一个user,我们如果用/{data:string}这样的话这样导致我们的路径是灵活的&#xff0c;所以我们得用其他方法 这里我们的路径是以anime为…...

python基础语法(二)

目录 注释注释的语法注释行文档字符串 注释的规范 输入输出和用户的交互通过控制台输出通过控制台的输入 注释 注释的语法 注释行 python的注释:使用#开通的行都是注释 # 这是一行注释C语言的注释:使用//的都是注释 // 这是一行注释文档字符串 使用三引号引起来的称为文档…...

从本地到Gitee:一步步学习文件上传及解决常见报错问题

&#x1f642;博主&#xff1a;小猫娃来啦 &#x1f642;文章核心&#xff1a;一步步学习文件上传及解决常见报错问题 文章目录 安装git进入gitee官网&#xff0c;登录账号新建仓库先打开git命令行上传本地资源到仓库第一步&#xff1a;git init第二步&#xff1a;git add .第三…...

idea2018修改大小写提示(敏感)信息

操作步骤如下&#xff1a; File > Settings > Editor > Code Completion > Code Completion&#xff08;默认是首字母&#xff0c;选为none将不区分大小写&#xff09;...

Quartz.Net调度框架简介

Quartz.Net是一个功能强大的开源任务调度框架&#xff0c;它可以在C#应用程序中实现灵活、可靠的任务调度和定时作业。它的主要作用是允许开发人员按照预定的时间表执行各种任务&#xff0c;例如定期生成报表、发送电子邮件、备份数据等。 在C#中使用Quartz.Net进行配置、开发…...

OpenClaw 的模型服务是否支持限流和熔断?策略如何配置?

在讨论OpenClaw模型服务的限流与熔断机制之前&#xff0c;不妨先回想一下城市交通系统。早晚高峰时&#xff0c;交警会在关键路口设置信号灯或临时管制&#xff0c;防止车辆过度涌入导致整个区域瘫痪。模型服务面临的场景其实非常相似——外部请求就像不断驶入的车辆&#xff0…...

MES(The Measures of Effect Size )工具箱的使用

MES&#xff08;The Measures of Effect Size &#xff09;效应量计算工具的使用 The Measures of Effect Size (MES) Toolbox is a set of Matlab functions which compute a wide range of effect size statistics. The four main toolbox functions cover common analysis d…...

VLN性能提升秘籍:详解JanusVLN的‘记忆宫殿’如何解决长期导航的内存爆炸问题

VLN性能优化实战&#xff1a;JanusVLN混合记忆机制解析与工程落地指南 1. 视觉语言导航的工程挑战与性能瓶颈 在智能家居助手、仓储机器人等实际应用场景中&#xff0c;视觉语言导航&#xff08;VLN&#xff09;系统经常面临三大核心性能挑战。首先是内存占用失控——传统方法需…...

Video2X:让你的老旧视频焕发新生的AI魔法工具

Video2X&#xff1a;让你的老旧视频焕发新生的AI魔法工具 【免费下载链接】video2x A lossless video/GIF/image upscaler achieved with waifu2x, Anime4K, SRMD and RealSR. Started in Hack the Valley II, 2018. 项目地址: https://gitcode.com/GitHub_Trending/vi/video…...

GoAccess源码深度解析:从main函数到核心模块调用链的完整指南

GoAccess源码深度解析&#xff1a;从main函数到核心模块调用链的完整指南 【免费下载链接】goaccess allinurl/goaccess: 是一个开源的 Web 日志分析工具&#xff0c;用于分析访问日志并生成报告。它可以帮助开发者快速了解网站流量、访问者等信息&#xff0c;优化网站性能。特…...

WSL 下 Debian 系统 apt 源切换国内镜像的完整指南

1. 为什么需要切换WSL Debian的apt源&#xff1f; 如果你在Windows Subsystem for Linux&#xff08;WSL&#xff09;中安装了Debian系统&#xff0c;可能会遇到软件包下载速度慢的问题。这主要是因为默认的软件源服务器位于国外&#xff0c;网络延迟较高。我刚开始用WSL时&…...

Beyond Compare 5 授权生成技术方案:基于密钥算法的永久授权实现指南

Beyond Compare 5 授权生成技术方案&#xff1a;基于密钥算法的永久授权实现指南 【免费下载链接】BCompare_Keygen Keygen for BCompare 5 项目地址: https://gitcode.com/gh_mirrors/bc/BCompare_Keygen 技术背景&#xff1a;破解文件对比工具授权限制的技术挑战 在现…...

为什么说Applio是解决复杂语音克隆难题的终极解决方案?

为什么说Applio是解决复杂语音克隆难题的终极解决方案&#xff1f; 【免费下载链接】Applio Ultimate voice cloning tool, meticulously optimized for unrivaled power, modularity, and user-friendly experience. 项目地址: https://gitcode.com/gh_mirrors/ap/Applio …...

如何让AI成为你的第二大脑?AnythingLLM浏览器扩展使用指南

如何让AI成为你的第二大脑&#xff1f;AnythingLLM浏览器扩展使用指南 【免费下载链接】anything-llm 这是一个全栈应用程序&#xff0c;可以将任何文档、资源&#xff08;如网址链接、音频、视频&#xff09;或内容片段转换为上下文&#xff0c;以便任何大语言模型&#xff08…...

Java八股文实战:从cv_resnet101模型服务理解RPC与序列化

Java八股文实战&#xff1a;从cv_resnet101模型服务理解RPC与序列化 你是不是也遇到过这种情况&#xff1f;面试时被问到“RPC和HTTP有什么区别&#xff1f;”、“序列化协议怎么选&#xff1f;”&#xff0c;脑子里全是书本上的概念&#xff0c;什么“远程过程调用”、“轻量…...