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

Python - 索引和切片

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

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]删除
最新教程 更多>
  • 'zip([iter(s)]*n)如何有效地将列表分成python中相等的块?
    'zip([iter(s)]*n)如何有效地将列表分成python中相等的块?
    在python [2进入一个单元。当与语法zip( [iter(s)] n)一起使用时,它提供了一种方便的方法,可以将列表拆分为相等大小的块。如何工作: n在列表s上创建包含迭代器的n副本的列表。迭代器的每个副本都从列表的开头开始。 *arg将列表解开为zip()的参数,从而导致n个迭代传...
    编程 发布于2025-02-06
  • 如何使用PHP从XML文件中有效地检索属性值?
    如何使用PHP从XML文件中有效地检索属性值?
    从php 您的目标可能是检索“ varnum”属性值,其中提取数据的传统方法可能会使您感到困惑。 - > attributes()为$ attributeName => $ attributeValue){ echo $ attributeName,'=“',$ at...
    编程 发布于2025-02-06
  • 如何在Java字符串中有效替换多个子字符串?
    如何在Java字符串中有效替换多个子字符串?
    Exploiting Regular ExpressionsA more efficient solution involves leveraging regular expressions.正则表达式允许您定义复杂的搜索模式并在单个操作中执行文本转换。示例示例usage 接下来,您可以使用匹配器...
    编程 发布于2025-02-06
  • 在没有密码提示的情况下,如何在Ubuntu上安装MySQL?
    在没有密码提示的情况下,如何在Ubuntu上安装MySQL?
    在ubuntu 使用debconf-set-selections sudo debconf-set-selections
    编程 发布于2025-02-06
  • 如何在没有物理主键的情况下集成EF 4.0数据模型?
    如何在没有物理主键的情况下集成EF 4.0数据模型?
    因缺少主键导致 EF 数据模型排除 在将现有数据库集成到 Entity Framework (EF) 4.0 时,某些表缺少主键的情况很常见。在创建新的实体数据模型时,就会出现这个问题,导致错误消息指出缺少主键,并随后将该表排除在外。 通常认为,必须向受影响的表添加物理主键才能解决此问题。但是,有...
    编程 发布于2025-02-06
  • SQL中的参数化查询如何防止SQL注入攻击?
    SQL中的参数化查询如何防止SQL注入攻击?
    SQL参数化查询与问号 在查阅SQL文档时,您可能会在查询中遇到问号(?)。这些占位符代表参数化查询,广泛用于在程序中执行动态SQL。 参数化查询具有诸多优势。它们通过将参数值与查询本身分离来简化代码,使其更高效、更灵活。此外,它们通过防止SQL注入攻击来增强安全性。 例如,在一个伪代码示例中: ...
    编程 发布于2025-02-06
  • 如何克服PHP的功能重新定义限制?
    如何克服PHP的功能重新定义限制?
    克服PHP的函数重新定义限制在PHP中,多次定义一个相同名称的函数是一个no-no。尝试这样做,如提供的代码段所示,将导致可怕的“不能重新列出”错误。 // error:“ coss redeclare foo()” 但是,php工具腰带中有一个隐藏的宝石:runkit扩展。它使您能够灵活地...
    编程 发布于2025-02-06
  • 如何计算Oracle SQL的两个日期之间的营业时间?
    如何计算Oracle SQL的两个日期之间的营业时间?
    在Oracle SQL 工作时间规范 the Usistion The Us The Bucky Tours是星期一至周六的8:00至下午6:00。要将这些小时纳入计算中,您可以使用日期操纵和有条件的逻辑的组合。 选择任务, start_time, end_time...
    编程 发布于2025-02-06
  • 从同一矢量推动元素时,如何确保安全?
    从同一矢量推动元素时,如何确保安全?
    vector v; v.push_back(1); v.push_back(v [0]); 如果第二个push_back触发了reallocation,则对v [0]的引用无效。为了解决这个问题,可以使用以下方法: vector v; v.push_back(1); v.Reserve(v....
    编程 发布于2025-02-06
  • 可以在纯CS中将多个粘性元素彼此堆叠在一起吗?
    可以在纯CS中将多个粘性元素彼此堆叠在一起吗?
    </main> <section> ,但无法使其正常工作,如您所见。任何洞察力都将不胜感激! display:grid; { position:sticky; top:1em; z-index:1 1 ; { { { pos...
    编程 发布于2025-02-06
  • 如何在SQL中创建关联应用程序名称的逗号分隔列表?
    如何在SQL中创建关联应用程序名称的逗号分隔列表?
    使用SQL查询创建逗号分隔列表 当多个表包含应用程序和资源数据时,一个常见的任务是列出一个表,其中列出所有资源名称以及用逗号分隔的关联应用程序名称。要使用单个SQL查询实现此目的,请按照以下步骤操作: MySQL: SELECT r.name, GROUP_CONCAT(a.na...
    编程 发布于2025-02-06
  • 个人投资组合|下一个JS
    个人投资组合|下一个JS
    大家好,祝大家新年快乐 今天,我分享了我在度假期间创建的个人投资组合。 我是谁? 我是小的前端工程师,拥有2年的经验,包括JSP,Next JS和CMS Tech Stacks。 技术堆栈 Next JS- React JS Framework 的安全性 [2 ...
    编程 发布于2025-02-06
  • 如何在JavaScript对象中动态设置键?
    如何在JavaScript对象中动态设置键?
    如何为JavaScript对象变量创建动态键,尝试为JavaScript对象创建动态键,使用此Syntax jsObj['key' i] = 'example' 1;将不起作用。正确的方法采用方括号:他们维持一个长度属性,该属性反映了数字属性(索引)和一个数字属性的数量。标准对象没有模仿这...
    编程 发布于2025-02-06
  • 如何匹配报价之外的正则实例:一个真实的断言解决方案
    如何匹配报价之外的正则实例:一个真实的断言解决方案
    为实现这一目标,使用了一个look-head主张:(?=( [2 ] 此断言是基于以下原则,即外部引号将随后是偶数引号。通过使用它,我们可以有效地忽略出现在没有关闭的逃脱引号或引号中。 。替换#,同时确保引号中的实例保持不变,得出以下内容:#bar#baz“ baz”否或“ \”此this“ fo...
    编程 发布于2025-02-06
  • 我何时以及如何处置取消tokensource?
    我何时以及如何处置取消tokensource?
    最佳实践:正确处理 CancellationTokenSource CancellationTokenSource 类虽然可被释放,但其正确的释放方式常常让开发者感到困惑。本文深入探讨何时以及如何有效释放此类。 造成这种不清晰的原因之一是 CancellationTokenSource 类没有终结...
    编程 发布于2025-02-06

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

Copyright© 2022 湘ICP备2022001581号-3