
为什么python的切片到底是什么意思
请看代码>>>A='123.456'>>>L=A[-1:-4:-1]>>>L'654'>>>L=A[-1:-4:1]>>>L''第一个为什么不是输出‘456’从倒数第一个...
请看代码
>>> A = '123.456'
>>> L=A[-1:-4:-1]
>>> L
'654'
>>> L=A[-1:-4:1]
>>> L
''
第一个为什么不是输出‘456’从倒数第一个,到倒数第4个,步长-1,那么不就是倒着数小数点右边的所有数
第二个步长改为1,为什么输出啥都没有,难道不应该是‘456’(如果我第一个想法错了),亦或是‘654’(如果我第一个想法对了)
欧美白人的逻辑真是难以搞懂,尤其是以编写python的等人为代表 展开
>>> A = '123.456'
>>> L=A[-1:-4:-1]
>>> L
'654'
>>> L=A[-1:-4:1]
>>> L
''
第一个为什么不是输出‘456’从倒数第一个,到倒数第4个,步长-1,那么不就是倒着数小数点右边的所有数
第二个步长改为1,为什么输出啥都没有,难道不应该是‘456’(如果我第一个想法错了),亦或是‘654’(如果我第一个想法对了)
欧美白人的逻辑真是难以搞懂,尤其是以编写python的等人为代表 展开
展开全部
这样解释吧some_iterabel[a:b:c]
a是起始,b是结束,c时一步走多少
a[-1:-4:-1]是-1开始-4结束,一步走-1
先定范围,-1到-4就是654,一步走-1,就是倒着走,所以就是654不变。
有趣的是a[-1:-4:1]
范围还是654不过自相矛盾了,因为是从后往前算的,你又让他正着走,自然没有东西啊
a是起始,b是结束,c时一步走多少
a[-1:-4:-1]是-1开始-4结束,一步走-1
先定范围,-1到-4就是654,一步走-1,就是倒着走,所以就是654不变。
有趣的是a[-1:-4:1]
范围还是654不过自相矛盾了,因为是从后往前算的,你又让他正着走,自然没有东西啊
追问
谢谢您的答案,‘’不过自相矛盾了,因为是从后往前算的’’,我想我大概明白了其中的奥妙,它的运算顺序是,先看开头,再看步长,最后是结尾,照这个来看,这么便能解释了
2019-10-06
展开全部
我是这样理解的:
L= []
for i in range(-1,-4,-1):
L.append(A[i])
#
print(list(range(-1,-4,1))) # [] 不在一个序列中
L= []
for i in range(-1,-4,-1):
L.append(A[i])
#
print(list(range(-1,-4,1))) # [] 不在一个序列中
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先列表s[i:j:k]的概念说一下,i为起始位置,j为结束位置,k为步长。
如果i或j为正,表示从左边的位置开始,即从索引0开始,例如:s = '123.456',s[0:2] == '12'。
如果i或j为负,则表示从末尾的位置开始,即len(s)+i或len(s)+j的值,例如:s[-3:-1] == '45'。
从i到j的s切片定义为以k为步长的序列,其中i<=k<j。如果i或j大于len(s),则使用len(s)。如果i省略,默认0。如果j省略,默认len(s)。如果i大于或等于j,则切片为空。
s从i到j步长为k的切片定义为第i+n*k项序列,其中0<=n<(j-i)/k。即索引是i、i+k、i+2*k、i+3*k等等,当到达j时停止(但不包括j)。如果k省略,默认1。
当k为正时,如果i和j的值大于len(s),则它们将减为len(s)。
当k为负时,如果i和j的值大于len(s),则它们将被减为len(s)-1。
第一个,k为-1,步长负数是从右向左依次递减输出,所以654。
第二个,起始位置i是-1,即6,步长1为正数,向右依次输出,不可能到达左边的-4位置,所以为空。
如果i或j为正,表示从左边的位置开始,即从索引0开始,例如:s = '123.456',s[0:2] == '12'。
如果i或j为负,则表示从末尾的位置开始,即len(s)+i或len(s)+j的值,例如:s[-3:-1] == '45'。
从i到j的s切片定义为以k为步长的序列,其中i<=k<j。如果i或j大于len(s),则使用len(s)。如果i省略,默认0。如果j省略,默认len(s)。如果i大于或等于j,则切片为空。
s从i到j步长为k的切片定义为第i+n*k项序列,其中0<=n<(j-i)/k。即索引是i、i+k、i+2*k、i+3*k等等,当到达j时停止(但不包括j)。如果k省略,默认1。
当k为正时,如果i和j的值大于len(s),则它们将减为len(s)。
当k为负时,如果i和j的值大于len(s),则它们将被减为len(s)-1。
第一个,k为-1,步长负数是从右向左依次递减输出,所以654。
第二个,起始位置i是-1,即6,步长1为正数,向右依次输出,不可能到达左边的-4位置,所以为空。
追问
它的运算顺序是,先看开头,再看步长,最后是结尾,照这个来看,这么便能解释了
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询