python中字符串的索引切片_在Python中切片字符串时,如何使用变量作为索引?

当我们执行从左到右的迭代时,基于中间位置的推理是有效的:li = [10, 20, 55, 65, 75, 120, 1000]

print 'forward slicing li[2:5] ->',li[2:5]

# prints forward slicing li[2:5] -> [55, 65, 75]

因为位置2在20/55和位置5在75/120之间

是的。

但当我们进行从右到左的迭代时,它不起作用:li = [10, 20, 55, 65, 75, 120, 1000]

print li

print 'reverse slicing li[5:2:-1] ->',li[5:2:-1]

# prints reverse slicing li[5:2:-1] -> [120, 75, 65]

我们必须把li[5:2:-1]看作:

从元素li[5](即120)到未混合元素li[2](即55)

也就是说

来自元素li[5](即120)仅包括li[3](即65)。

是的。

这使得危险的反向切割从最末端开始:li = [10, 20, 55, 65, 75, 120, 1000]

print li[ -1 : 2 : -1 ]

# prints [1000, 120, 75, 65] not [120, 75, 65, 55]

# the same as:

print li[ None : 2 : -1 ]

# prints [1000, 120, 75, 65]

print li[ : 2 : -1 ]

# prints [1000, 120, 75, 65]

以及li = [10, 20, 55, 65, 75, 120, 1000]

print li[ 4 : 0 : -1]

# prints [75, 65, 55, 20] , not [65, 55, 20, 10]

是的。

如果这样想有困难,防止错误的方法是print list(reversed(li[2:5]))

# prints [75, 65, 55]

print list(reversed(li[2:-1]))

# prints [120, 75, 65, 55]

print list(reversed(li[0:4]))

# prints [65, 55, 20, 10]

是的。

注意,只要包含第一个元素,获得反向切片的唯一方法是print li[ 4 : : -1]

代表print li[ 4 : None : -1]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值