关于切片的应用
哪位大牛帮我解释一下,为什么以下两个函数得到的结果不一样?
name = "Ronaldo"
ln=list(name)
函数一:
def R1(r):
r[-1:],r[0:-1] = r[0:-1],r[-1:]
>>> R1(ln)
>>> ln
['o', 'd']
函数二:
def R2(r):
r[0:-1],r[-1:] = r[-1:],r[0:-1]
>>> R2(ln)
>>> ln
['o', 'R', 'o', 'n', 'a', 'l', 'd']
哪位大牛帮我解释一下,为什么以下两个函数得到的结果不一样?
name = "Ronaldo"
ln=list(name)
函数一:
def R1(r):
r[-1:],r[0:-1] = r[0:-1],r[-1:]
>>> R1(ln)
>>> ln
['o', 'd']
函数二:
def R2(r):
r[0:-1],r[-1:] = r[-1:],r[0:-1]
>>> R2(ln)
>>> ln
['o', 'R', 'o', 'n', 'a', 'l', 'd']
2017-10-15
特意运行了一下
R1函数:这句r[-1:],r[0:-1] = r[0:-1],r[-1:]其实是先后执行以下两步:
1、r[-1:]=r[0:-1] #先把“Ronaldo”变成“RonaldRonald”,存在内存里,r这个时候还是“Ronaldo”,还没有赋值为“RonaldRonald”
2、r[0:-1]=r[-1:] #再把“RonaldRonald”变成“od”,因为r还是“Ronaldo”,所以取'o'替换“RonaldRonald”中的“RonaldRonal”
执行完之后r才赋值为“od”
R2函数:也是相当于执行两步:
1、r[0:-1]= r[-1:] # 先把“Ronaldo”变成“oo”,r依然是“Ronaldo”
2、r[-1:] =r[0:-1]# 再把“oo”变成“oRonald”
举报