”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > Python - 索引和切片

Python - 索引和切片

发布于2024-08-01
浏览:189

Python - Indexing and Slicing

索引和切片是Python中的一个重要概念,尤其是当我们使用字符串时。

索引:

WKT,字符串只不过是字符序列。
因此,每个字符都有一个位置,即 index,访问它们在该特定字符串中的位置称为 indexing.

在Python中,我们有基于零的索引,即字符串的第一个字符的索引(位置)为0而不是1,然后第二个字符的索引(位置)为1,依此类推。

例如,

>     H E L L O W O R L D
>     0 1 2 3 4 5 6 7 8 9

这被称为正索引,因为我们仅使用正数来引用索引。

你可能会问“那我们也有负面指示吗??”
Ofc,但在这里我们没有将零作为第一个位置,因为它不是负数。

负索引允许我们从字符串末尾访问字符,即最后一个字符的索引为-1,倒数第二个字符的索引为-2,依此类推。

>      H  E  L  L  O  W  O  R  L  D
>    -10 -9 -8 -7 -6 -5 -4 -3 -2 -1
word = "HELLOWORLD"

print(word[0])
print(word[5])

H
W

相似地,

print(word[-1])
print(word[-6])

D
0

这就是索引。


切片:

将一根绳子切片想象成从整个蛋糕上切下一片蛋糕。我们可以指定从哪里开始切割(索引)、在哪里结束(结束索引),甚至每个切片应该有多大(步骤)。这样,我们就可以按照我们喜欢的方式制作蛋糕(或绳子)的较小部分!

在Python中,对字符串进行切片可以让我们通过指定字符串中的开始位置和结束位置来获取字符串的特定部分。
因此,例如,如果 message 包含“HELLOWORLD”,则 message[3:7] 会给出“LOWO”,因为它从索引 3 ('L') 开始,在索引 7 ('D') 之前结束。这样,我们就可以提取我们需要的字符串的任何部分!

- 切片的基本语法是,

string[start:stop]
  • 起始索引是切片开始的位置,并且该索引是包含在内的。
  • 停止索引是切片结束的位置,但该索引是排他的,这意味着该索引处的字符不包含在切片中。
text = "HappyBirthday"

print(text[0:5])  
print(text[5:13])

Happy
Birthday  

在Python中对字符串进行切片时,我们可以简单地省略开始或停止索引,以从字符串的开头或结尾进行切片。
就这么简单!

- 一步切片,

要指定Python中对字符串进行切片时的字符间隔,只需添加冒号后跟步长值即可:

string[start:stop:step]

这允许控制我们在创建切片时如何跳过字符串的字符。

message = "HELLOWORLD"
print(message[1::2])    

EORL

message[1::2] 从索引 1 ('E') 开始切片到字符串末尾,步长为 2。
因此,它包括索引 1、3、5 和 7 处的字符,即“EORL”。

直到我们看到了正切片,现在让我们了解负切片。

- 负切片:

  • 负步允许您以相反的顺序切片字符串。
  • 让我们以相反的顺序从倒数第二个字符到第三个字符进行切片
message = "HELLOWORLD"
print(message[-2:2:-1])

ROWOL

让我们研究一下某些问题。

#编写一个函数,它接受一个字符串并返回一个由其第一个和最后一个字符组成的新字符串。

word = "Python"
end = word[0] word[5]
print(end)

Pn

#编写一个反转给定字符串的函数。

word = "Python"
print(word[::-1])

nohtyP

#给定一个字符串,提取并返回第3个到第8个字符(含)的子字符串。

text = "MichaelJackson"
print(text[3:9])

haelJa

#给定一个电子邮件地址,提取并返回域名。

email = "[email protected]"
domain = email[:-10]
print(domain)

hello_world

#编写一个函数,返回给定字符串中的每三个字符。

text = "Programming"
print(text[::3])

Pgmn

#编写一个函数,跳过每隔一个字符,然后反转结果字符串。

text1 = "Programming"
print(text1[::-2])

gimroP

#编写一个函数,从给定字符串中提取并返回偶数索引处的字符。

text = "Programming"
print(text[::2])

Pormig

好吧,这就是这里的基本内容。

.....

版本声明 本文转载于:https://dev.to/abys_learning_2024/python-indexing-and-slicing-2moh?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 如何为 DOM 元素生成精确的 CSS 路径?
    如何为 DOM 元素生成精确的 CSS 路径?
    以增强的精度从 DOM 元素检索 CSS 路径提供的函数尝试为给定 DOM 元素生成 CSS 路径。然而,它的输出缺乏特异性,无法捕获元素在其兄弟元素中的位置。为了解决这个问题,我们需要一种更复杂的方法。改进的 CSS 路径函数下面介绍的增强函数解决了原来的限制:var cssPath = func...
    编程 发布于2024-11-03
  • 如何将单个 Python 字典写入具有精确标题和值行的 CSV 文件?
    如何将单个 Python 字典写入具有精确标题和值行的 CSV 文件?
    探索将 Python 字典写入 CSV 文件的细微差别您对将 Python 字典无缝写入 CSV 文件的追求给您带来了意想不到的挑战。虽然您设想在作为标题的字典键和作为第二行的值之间进行清晰的划分,但您当前的方法似乎还不够。让我们深入细节,解锁解决方案。问题在于方法的选择。 DictWriter.w...
    编程 发布于2024-11-03
  • 如何处理 Go 中延迟函数的错误返回值?
    如何处理 Go 中延迟函数的错误返回值?
    处理 Go 中返回值错误的延迟函数当返回变量的函数在没有延迟的情况下被延迟时,gometalinter 和 errcheck 正确地发出警告检查其返回的错误。这可能会导致未处理的错误和潜在的运行时问题。处理这种情况的习惯用法不是推迟函数本身,而是将其包装在另一个检查返回值的函数中。这是一个例子:de...
    编程 发布于2024-11-03
  • 为什么程序员不能总是记住代码:背后的科学
    为什么程序员不能总是记住代码:背后的科学
    如果您曾经想知道为什么程序员很难回忆起他们编写的确切代码,那么您并不孤单。尽管花费了数小时编码,许多开发人员经常忘记细节。这并不是因为缺乏知识或经验,而是因为工作本身的性质。我们来探究一下这种现象背后的原因。 编程的本质 通过记忆解决问题 这比仅仅记忆语法更能解决问题...
    编程 发布于2024-11-03
  • 你并不孤单:在社区的支持下掌握 Python
    你并不孤单:在社区的支持下掌握 Python
    加入 Python 社区可获得:社区论坛:向经验丰富的开发者获取支持和建议(如 Stack Overflow)。Discord 服务器:实时聊天室,提供即时支持和指导(如 Python Discord)。在线课程和研讨会:来自专家的指导,涵盖各种主题(如 Udemy 上的 Python NumPy ...
    编程 发布于2024-11-03
  • 学习伙伴
    学习伙伴
    聊天机器人界面,允许用户输入消息并接收来自 GPT-3.5 语言模型的对话响应。 特征 用于处理 HTTP 请求的基于 Flask 的 Web 服务器。 呈现用作用户界面的基本 HTML 模板 (chat.html)。 通过 POST 请求接受用户输入并将其发送到 OpenAI 的 GPT-3.5 ...
    编程 发布于2024-11-03
  • 前端开发 + 数据结构和算法:DSA 如何为您的 React 应用程序提供动力 ⚡
    前端开发 + 数据结构和算法:DSA 如何为您的 React 应用程序提供动力 ⚡
    专注于前端的面试通常根本不关心 DSA。 对于我们这些记得在学校/大学学习过 DSA 的人来说,所有的例子都感觉纯粹是算法(有充分的理由),但几乎没有任何例子或指导来说明我们每天使用的产品如何利用这个概念。 “我需要这个吗?” 你已经问过很多次这个问题了,不是吗? ? 以下是您今天可以在 React...
    编程 发布于2024-11-03
  • 为什么表行上的框阴影在不同浏览器中表现不同?
    为什么表行上的框阴影在不同浏览器中表现不同?
    跨浏览器表行上的框阴影外观不一致应用于表行 () 的 CSS 框阴影可能表现出不一致的行为跨各种浏览器。尽管 CSS 相同,但某些浏览器可能会按预期显示阴影,而其他浏览器则可能不会。要解决此问题,建议将 Transform 属性与 box-shadow 属性结合使用。将scale(1,1)添加到tr...
    编程 发布于2024-11-03
  • 探索 PHP 中的并发性和并行性:实践教程和技巧
    探索 PHP 中的并发性和并行性:实践教程和技巧
    理解并发性和并行性对于编写高效的 PHP 应用程序至关重要,特别是在处理需要同时处理的多个任务或操作时。这是理解和实现 PHP 并发性和并行性的分步指南,包含实践示例和说明。 1.并发与并行 并发:指系统通过交错执行同时处理多个任务的能力。这并不一定意味着任务是同时执行的,只是对它们...
    编程 发布于2024-11-03
  • ReactJs 与 Angular
    ReactJs 与 Angular
    React 和 Angular 是用于构建 Web 应用程序的两个最流行的框架/库,但它们在关键方面有所不同。以下是 React 和 Angular 之间主要区别的细分: 1. 类型:库与框架 React:一个用于构建用户界面的库,主要关注视图层。它允许开发人员将其与其他库集成以处理...
    编程 发布于2024-11-03
  • 如何使用变量中存储的类名动态实例化 JavaScript 对象?
    如何使用变量中存储的类名动态实例化 JavaScript 对象?
    使用动态类名实例化 JavaScript 对象假设您需要使用存储在变量中的类名实例化 JavaScript 对象。下面是一个说明性示例:// Define the class MyClass = Class.extend({}); // Store the class name in a strin...
    编程 发布于2024-11-03
  • Spring Boot 中的 OAuth 身份验证:Google 和 GitHub 登录集成指南
    Spring Boot 中的 OAuth 身份验证:Google 和 GitHub 登录集成指南
    使用 OAuth 2.0 增强安全性:在 Spring Boot 中实现社交登录 在现代 Web 开发的世界中,保护您的应用程序并使用户的身份验证尽可能顺利是首要任务。这就是 OAuth 2.0 的用武之地——它是一个强大的工具,不仅可以帮助保护您的 API,还可以让用户使用现有帐户从 Google...
    编程 发布于2024-11-03
  • 热点图——巴西 vs 意大利世界杯决赛)
    热点图——巴西 vs 意大利世界杯决赛)
    在这篇文章中,我开始尝试使用 Python 和 Seaborn 和 Matplotlib 创建 1970 年世界杯决赛中巴西运动的热图 。这个想法是根据那场比赛的比赛风格特征来代表巴西队在场上占据的空间。 1. 绘制场地 场地设计为比例坐标(130x90),包括边线、球门区和中心圈,...
    编程 发布于2024-11-03
  • 如何在 C++ 中连接字符串文字和字符文字?
    如何在 C++ 中连接字符串文字和字符文字?
    C 中的字符串文字和字符文字 尝试在 C 中连接字符串文字与字符文字时,可能会出现意外行为。例如:string str = "ab" 'c'; cout << str << endl;此代码会产生不可预测的输出,因为没有定义“”运算符来组合字符串文字和...
    编程 发布于2024-11-03
  • 通过“Go 练习挑战”课程释放您的算法潜力
    通过“Go 练习挑战”课程释放您的算法潜力
    通过 LabEx 的“Go Practice Challenges”课程踏上激动人心的旅程,提高您的编程技能。这门综合课程旨在帮助您掌握解决问题的艺术和提高编码效率,为您提供应对各种算法挑战的工具和技术。 深入算法世界 “围棋实践挑战”课程提供了一系列实际挑战,将突破您的算法思维界限...
    编程 发布于2024-11-03

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3