百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

python3切片使用方法及一些技巧介绍+leetcode题例

off999 2024-09-21 21:03 45 浏览 0 评论

概述

在Python中,字符串是定义为字符的有序集合,即我们可以像使用列表一样在字符串中自由翱翔-使用索引和切片操作字符串,比如通过指定的索引获取字符串某个位置的字符。

# 示例字符串
s = 'python str with slice'

索引的简单使用

在Python中字符串的索引可以是正数,正数即从左向右索引,索引从0开始,也可以是负数,负数即从右向左开始索引,索引从-1开始。如果超出了正负的索引范围,则会抛出异常

# 即从左边获取第一个偏移位置的字符
print(s[0])
# 即从左边获取第一个偏移位置的字符
print(s[-1])
# 即从左边获取第三个偏移位置的字符
print(s[4])
try:
 # 尝试不存在于s的索引
 print(s[1000])
except:
 print('IndexError: string index out of range')

示例结果:

p
e
o
IndexError: string index out of range

切片的简单使用

切片,顾名思义即将一个有序序列切出一片,即从一个完整的字符串中取出一部分字符串,而怎么取? 这就取决于我们怎么利用索引进行切片了:

s = 'python str with slice'
# 获取从偏移为1,直到但不包括偏移为6的元素
print(s[0:6])
# 获取从偏移为7,直到但不包括偏移为10的元素
print(s[7:10])
# 获取从偏移为11,直到但不包括偏移为-6的元素
print(s[11:-6])

示例结果:

python
str
with

通过上面的切片效果,我们可以看到切片的基本使用,即通过两个用冒号隔开的索引完成“切片”操作,并返回新的字符串(记住,就算只“切”了一个字符,在Python中单个字符也是作为字符串的存在,这和类C中是不一样的)

更酷一点的切片

# 示例字符串
s = 'python str with slice'
# 获取偏移为16直到末尾的元素,等价于获取偏移为16直到但不包括偏移为序列长度的元素
print(s[16:])
# 获取从偏移为0,直到但不包含偏移为11的元素
print(s[:11])
# 获取偏移为-5直到末尾的元素,等价于获取偏移为16直到但不包括偏移为序列长度的元素
print(s[-5:])
# 获取从偏移为0,直到但不包含偏移为-11的元素
print(s[:-11])
# 获取从偏移为0,知道末尾的元素,实现了有效的底层s复制。
print(s[:])

示例效果:

slice
python str
slice
python str
python str with slice

顶层赋值小技巧

对于最后一个示例,即s[:],对于可变对象的复制是很有用处的,比如列表,当我们想要复制列表时:

ls1 = [1, 2, 3, 4, 5]
ls2 = ls1
ls2[0] = 100
print(ls1)

示例结果

[100, 2, 3, 4, 5]

我们看到运行结果,对于可变对象的复制,通过ls2 = ls1其实类似C中将指向ls1的指针赋值给ls2,即还是指向了同一内存空间,所以在操作ls2时,ls1也同时发生了变化,本质就是在操作同一内存空间

而通过s[:]可以实现新的内存分配,完整的赋值一份新的数据,使ls2指向新的内存空间:

ls1 = [1, 2, 3, 4, 5]
ls2 = ls1[:]
ls2[0] = 100
print(ls1)

示例结果

[1, 2, 3, 4, 5]

更更酷一点的切片

在切片的使用中还可以再添加一个可选择的索引参数

python s = 'abcdefghijk' ¨K20K print(s[:11:2]) ¨K21K print(s[11::-2]) ¨K22K print(s[::-1]) ¨G11G acegik kigeca ¨G12G 实现 strStr() 函数。 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。 示例 1: 输入: haystack = "hello", needle = "ll" 输出: 2 示例 2: 输入: haystack = "aaaaa", needle = "bba" 输出: -1 说明: 当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。 对于本题而言,当 needle 是空字符串时我们应当返回 0 。这与C语言的 strstr() 以及 Java的 indexOf() 定义相符。 ¨G13G python class Solution: def strStr(self, haystack: str, needle: str) -> int: if needle: length_h = len(haystack) length_n = len(needle) for i in range(length_h): if haystack[i:i+length_n] == needle: return i return -1 else: return 0

相关推荐

一芯fc1178bc盘量产教程(一芯量产工具使用教程)

fc1178bc量产工具没有显示u盘拔下U盘,关闭量产工具,再插上U盘(先要确认卸载了安国的驱动,如果不能确认,运行LoadDriver.exe卸载),然后插上U盘,右键我的电脑---属性---硬件-...

电脑怎么样还原原来的系统(电脑怎么还原之前的系统版本)
  • 电脑怎么样还原原来的系统(电脑怎么还原之前的系统版本)
  • 电脑怎么样还原原来的系统(电脑怎么还原之前的系统版本)
  • 电脑怎么样还原原来的系统(电脑怎么还原之前的系统版本)
  • 电脑怎么样还原原来的系统(电脑怎么还原之前的系统版本)
u盘内文件损坏怎么办(u盘内文件损坏怎么办解决)

以下是8种修复U盘文件损坏的方法:1.风险自担型:试图直接复制文件如果U盘的部分文件损坏,您可能可以使用此方法。请复制文件您能打开的所有文件,并尝试将它们粘贴到桌面或其他文件夹中。但是请...

internet explorer怎么更新(22号天蝎座的运势)

1、打开IE浏览器。2、点击位于浏览器窗口的右上角的功能按钮。3、点击关于InternetExplorer。它位于下拉菜单的底部。4、勾选“自动安装新版本”复选框。它位于“关于Internet...

snapseed(snapseed手机修图软件免费版)

Snapseed是一款非常流行的手机修图工具,下面是Snapseed工具最全教程:1.打开照片:打开Snapseed,点击左上角的“打开”按钮,选择需要修图的照片。2.自动增强:点击屏幕左下角的“...

canon佳能打印机驱动下载(下载佳能打印机驱动程序)

打开开始菜单,选择运行。输入gpedit.msc,并确定。选择左边“windows设置”,右边鼠标左键双击“安全设置”。选择策略在选择安全选项再鼠标左键双击“设备:防止用户安装打印机驱动程序”。选择已...

爱思助手安卓版下载(爱思助手安卓版下载v1.21.03)

容易造成系统的崩溃在爱思助手中安装的软件都打不开或者发生闪退,很容易造成系统的崩溃需要重新刷机,所以一般不太推荐使用爱思助手。爱思助手上下载正版软件不需要AppleID,这是为了方便不会注册的用户,但...

微软拼音输入法app(微软拼音输入法App下载)
微软拼音输入法app(微软拼音输入法App下载)

1、选择微软拼音输入法的图标,点击鼠标右键,出现菜单后选择设置选项。2、在高级里把美式键盘改为微软拼音输入法,然后点击右下角的属性按钮。3、点击逐键提示选项后,选择确定按钮,在后面出现对话框中点击应用即可。微软拼音输入法是一种基于语句的智能...

2025-12-31 04:51 off999

win10怎么更新蓝牙驱动(win10 更新蓝牙驱动)

1.电脑桌面,右键【此电脑】,点击【属性】。2.然后点击【设备管理器】。3.然后展开【蓝牙】。4.然后鼠标右键【Bluetooth】,点击【更新驱动程序(P)】。5.选择一种方式更新驱动,更新完驱动就...

360免费升级正版win10(360 win10免费升级)

  XP无法直接升级到Windows10.  能否升级还需要看硬件配置是否达标。如果达标可以通过以下方法来安装。  1、去系统网站下载win10镜像文件。  2、使用软碟通软件把镜像文件里面的gho....

w7正版系统多少钱一年(正版win7旗舰版系统多少钱)

所有的正版windows系统都是需要付费购买的,包括笔记本电脑中预装好的正版系统,相应的费用也算入购机款中。你问的外行了。1、OEM系统是正版的,但是只能用于本品牌机上,也就是联想的WIN7系统(即O...

excel2007破解版下载电脑版(excel 破解版)

现在excel2007可以说是免费软件,也可以说不是,因为现在在网上下载不了免费的2007年版excel软件,只能下载破译版的或用电信交钱下载。但有些电脑重装系统会带有2007年版的excel,这就是...

comfast设置连接wifi(comfast路由器设置方法)

1,网关没有设置,2,DNS服务器没有设置,或者说设置成自动获取IP地址.具体不知道你是什么样的路由器,一般来说正常情况下网桥都是可以接收wifi信号的。所谓的网桥是使用有线网络连接到网桥设备上,然...

windows电脑管家(windows电脑管家有用吗)

可以按照以下的方法步骤解决:1,在电脑左下角的搜索框内输入“电脑管家”,即可在电脑中匹配到该程序2,右键点击该程序图标,选择“打开文件位置”3,点击“打开文件位置”即可打开该程序在电脑中的地址窗口,右...

hosts文件可以删除吗(hosts文件删除会自动生成吗)

我的回答:是需要权限。Linux系统的话,可以直接使用root账号去删除hosts文件。Windows系统的话,可以使用administrator管理员账号,以管理员权限去删除。Linux系统里面一般...

取消回复欢迎 发表评论: