鱼C论坛

 找回密码
 立即注册
查看: 2334|回复: 6

[已解决]关于字符串切片的一个疑问

[复制链接]
发表于 2016-12-15 10:49:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
比方我的字符串aString='abcd',书上说进行反序的方法是aString[::-1],结果也的确如此。但是我不明白的是:
根据《Python核心编程》上面所说的是:如果切片不指明起始值和终点值,那么起始值和终点值是第一个元素和最后一个元素。所以我感觉aString[::-1]的输出应该是:adcb。请问我的理解哪里错了呢?按照我的想法,正确的方法应该是aString[-1::-1]
最佳答案
2016-12-16 21:06:23
别看书呀,实践出真知。
>>> str1 = 'a11b11c11d11f11g'
>>> str1[::3]
'abcdfg'
>>> str1[::-3]
'gfdcba'

这就说明了步长是正数,则表示从左到右
                 步长是负数,则表示从右到左   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-12-15 12:43:16 | 显示全部楼层
切片语法 [起点:终点:步长]

-1 是步长
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-12-15 17:29:14 | 显示全部楼层
SixPy 发表于 2016-12-15 12:43
切片语法 [起点:终点:步长]

-1 是步长

我知道-1是步长。但是根据《Python核心编程》168页所说“如果开始索引或者结束索引没有被指定,则分别以字符串的第一个和最后一个索引值为默认值。”和167页所说“,对任何范围[start:end],我们可以访问到包括start 在内到end(不包括end)的所有字符,换句话说,假设x 是[start:end]中的一个索引值,那么有: start<= x < end.”aString[::-1]应该是从0所以开始,然后以步长为-1进行遍历于是有a,d,c,b,为什么不是这样呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-12-15 17:43:17 | 显示全部楼层
以步长为-1进行遍历

你是如何理解这句话呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-12-16 21:06:23 | 显示全部楼层    本楼为最佳答案   
别看书呀,实践出真知。
>>> str1 = 'a11b11c11d11f11g'
>>> str1[::3]
'abcdfg'
>>> str1[::-3]
'gfdcba'

这就说明了步长是正数,则表示从左到右
                 步长是负数,则表示从右到左   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-12-19 22:21:57 | 显示全部楼层
楼上的说得很清楚。小弟在补充几句
譬如: 0·········5
            string
           -6·····-1
即str='string',str[0] == str[-6]  ---> 以此类推 ---> str[5] == str[-1]  就可以验证你的想法

还有就是str[I:J:K]意思是从I到J-1,每隔K个元素索引一次,如果K为负数,就是按从右往左索引。

按照我对编程语言的思维的理解:就是数学的思维,每道数学题有各种各样的解法,你可以这样算,我可以这样算。唯一区别就是效率问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-12-19 23:56:46 | 显示全部楼层
学习了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-5 16:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表