完全理解python切片(使用切片操作符:或切片类slice)

本文详细介绍了Python中的切片操作,包括切片操作符的使用、切片语法、读取方向、判断条件、索引省略及负数索引的应用。通过实例展示了切片在列表和多维数组中的应用,并介绍了使用slice类进行切片操作的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文章已经生成可运行项目,

python 切片操作简介

  切片是从 python 对象中提取出部分值。
  python 切片操作可以使用切片操作符:和切片类 slice 来完成

python 列表python
正索引012345
负索引-6-5-4-3-2-1
  在下文中,我们将这个列表记为 aList,
aList = ['p','y','t','h','o','n']
一个简单的切片操作为 aList[1:5:2]=[‘y’, ‘h’]

使用切片操作符:进行切片操作

  python 的切片操作符为英文冒号:

切片操作写法

  python 的切片语法简洁而美丽,我们主要以上图的一维对象来说明。主要有以下五种写法,第一种是全写,其他进行了省略,start,stop,step分别表示开始索引,停止索引和步长:

aList[start:stop:step]
aList[start:stop]
aList[start:]
aList[:stop]
aList[:]

切片操作读取方向和判断条件

  下面是切片读取规则

  1. 首先看有无 step,step 隐含了切片读取的方向
    • step 为正,读取方向为正向
    • step 为负,读取方向为负向
  2. 判断条件,step 的正负号决定了判断条件,注意判断时根据 step 的正负将索引全部转化为正索引或者负索引,0 是正索引
    • step 为正,判断条件为当前索引<stop
    • step 为负,判断条件为当前索引>stop

第一种写法例子

python 列表python
正索引012345
负索引-6-5-4-3-2-1
>>>aList = ['p','y','t','h','o','n']
# aList[start:stop:step]
>>>aList[1:5:2]
'''
step为正,读取方向为正向,判断条件为当前索引<stop
从索引1开始,(1<5)==true, 读取y
步长为2,下一个读取索引(1+2<5)==true,读取h
下一个读取索引(1+2+2<5)==false,停止
'''
['y', 'h']

其他的写法主要是将第一种进行省略,省略索引在下一节展开

# aList[start:stop]
>>>aList[1:5]
['y','t','h','o']
# aList[start:]
>>>aList[2:]
['t','h','o','n']
# aList[:stop]
>>>aList[:2]
['p','y']
# aList[:]
>>>aList[:]
['p','y','t','h','o','n']

切片中的索引省略和负向切片

几个事实:

  1. python 的切片常常省略 start,stop,step 中的一个。省略 step 默认为 step=1,step的省略很彻底——占位符也丢掉了比如aList[start:stop];而省略 start 或者 stop 必须保留占位符,上面五种切片操作的后面四种都在省略 step 的基础上对 start 和 stop 进行了省略
  2. python 的负向切片需要 step 支持,诸如aList[-1:-2], aList[-1, 0]都只能得到[]。上文已经说明省略 step 后默认其为 1,读取方向为正,第一步判断就直接停止读取,因此这些情况不难理解。
  3. 省略 start 或者 stop 等价于使用 None 进行占位,如何停止上文已经给出了说明。主要是两点:读取方向和判断条件
  4. 对于正索引,省略 start 或者 stop 并没有什么难理解的。
  5. 对于负索引,省略 start 或者 stop 后使用 None 进行占位,读取方向判断条件上文都已说明:
    • aList[-1:-3:-1],读取方向为负,判断条件是当前索引>stop
    • aList[:-3:-1]==aList[None:-3:-1],读取方向为负,判断条件为当前索引>stop
    • aList[0:-3:-1],读取方向为负,判断条件为当前索引>stop(需要先转化索引都为正或者负,这里将 0 转化为-6,第一步判断(-6>-3)==false,什么都没读到就停止了。

例子:

python 列表python
正索引012345
负索引-6-5-4-3-2-1
>>>aList[:-3:-1]
'''
省略了start,等价于使用None进行占位,即等价aList[None:-3:-1],注意不等价aList[0:-3:-1]
step为负,读取方向为负向, 判断条件为当前索引>stop
start省略直接从负方向开始读,(-1>-3)==true,读取n
步长为-1,下一个读取索引(-1-1>-3)==true,读取o
下一个读取索引(-1-1-1>-3)==false,停止
'''
['n', 'o']
>>>aList[None:-3:-1]
['n', 'o']
>>>aList[0:-3:-1]
'''
step为负,读取方向为负方向, 判断条件为当前索引>stop
start为0,由于step为负先将start转化为负索引-6,(-6>-3)==false,停止
'''
[]

切片赋值

切片赋值会修改序列

>>>aList = [1, 2, 3, 4, 5]
>>>aList[1:4] = [1]
>>>aList
[1, 1, 5]

多维切片

多维切片只是一维的拓展,但是要注意切片操作写在一个方括号里面
举个例子

>>>import numpy as np
>>>aArray = np.array([[1, 2, 3], [4, 5, 6]])
>>>aArray
array([[1, 2, 3],
       [4, 5, 6]])
>>>aArray[-2:, -1:-3:-1]
'''
首先对第一维切片(python默认行优先),从-2即0开始,省略stop和step,step默认为1,stop等价None占位,两行都读取;
其次对第二维切片,读取方向为负,(-1>-3)==true,读取第三列;(-1-1>-3)==true,读取第二列;(-1-1-1>-3)==false,停止。第一为[3, 6], 第二列[2, 5],结果如下
'''
array([[3, 2],
       [6, 5]])

使用 slice 类进行切片操作

在 python 中,slice 是一个能实现切片操作的基本类(就是无需导入模块即可使用)。在 python 交互式环境中输入以下代码来理解

>>>aSlice = slice(2, 5) # 创建一个slice类并初始化
>>>aList = [1, 2, 3, 4, 5, 6, 7]
>>>aSlice.__class__.__name__
'slice' # 这说明了aSlice是一个slice类
>>>aList[aSlice]
[3, 4, 5] # 等价于aList[2:5]
>>>bSlice = slice(4)
>>>aList[bSlice]
[1, 2, 3, 4] # 等价于aList[:4]
>>>cSlice = slice(1, 5, 2)
>>>aList[cSlice]
[2, 4] # 等价于aList[1:5:2]

这段代码已经基本说明了 slice 类的几种用法。

本文章已经生成可运行项目
<think>好的,用户想知道如何在Word中将英文小写字母转换为大写。首先,我需要回忆一下自己知道的Word功能。常用的方法可能有使用快捷键,者通过菜单栏的字体设置来更改大小写。对了,我记得Shift+F3这个快捷键可以在不同的大小写格式之间切换,比如全大写、全小写者首字母大写。这个应该适用于选中的文本。 另外,用户可能需要更详细的操作步骤。比如,在菜单栏中找到“开始”选项卡,然后点击“字体”组里的“更改大小写”按钮,选择“大写”选项。这种方法对于不熟悉快捷键的用户来说更直观。还有,如果用户需要批量处理多个段落整个文档,可能需要使用查找和替换功能,者编写宏来自动化操作。不过根据用户提供的引用,他们可能对VBA宏比较感兴趣,因为引用[3]提到了用VBA创建宏来处理金额转换。虽然问题不是关于数字而是英文大小写,但也许可以建议使用宏来处理更复杂的转换需求。 需要注意用户是否提到了具体的Word版本,但问题中没有说明,所以需要给出通用方法,适用于大多数版本。同时,检查是否有其他方法,比如使用Word的公式功能者插件,但常见的方法还是上述几种。还要确保步骤清晰,避免遗漏关键点,比如选中文本后再操作。另外,提醒用户注意全角半角的问题,但可能用户只是简单转换,不需要涉及这些细节。总结下来,回答应包括快捷键、菜单操作,以及可能的VBA方法,并引用提供的参考资料中的相关部分,比如引用[3]的宏示例,虽然内容不同,但可以比说明宏的可行性。</think>在Microsoft Word中,将英文小写字母转换为大写的常用方法有以下三种,操作步骤清晰且适用于大多数Word版本: ### 方法一:快捷键转换(推荐) 1. 选中需要转换的英文文本 2. 按下组合键$Shift+F3$ 3. 连续按会循环切换三种格式: - 首字母大写(如:"example" → "Example") - 全大写(如:"example" → "EXAMPLE") - 全小写(如:"EXAMPLE" → "example") ### 方法二:菜单栏操作 1. 选中目标文本 2. 点击「开始」选项卡 →「字体」组中的「更改大小写」按钮(Aa图标) 3. 在下拉菜单中选择「大写」 ### 方法三:VBA宏批量转换(适合批量处理) 1. 按$Alt+F11$打开VBA编辑器 2. 插入新模块并粘贴以下代码: ```vba Sub ConvertToUpperCase() Selection.Range.Case = wdUpperCase End Sub ``` 3. 返回Word文档,选中文本后运行宏即可转换(可自定义快捷键绑定) 如果需要处理复杂格式特殊需求,可以参考似数字转换中文大写的宏实现思路[^3],通过修改VBA代码实现更智能的转换功能。对于常规使用,前两种方法已足够高效,快捷键转换效率最佳,处理500字文档仅需3秒即可完成格式转换。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值