Python slice()
时间:2020-02-23 14:43:19 来源:igfitidea点击:
Python slice()函数返回一个slice对象,该对象代表range(start,stop,step)指定的一组索引。
Python slice()
Python slice函数的语法为:
class slice(stop) class slice(start, stop[, step])
请注意,slice函数将返回slice对象。
我们可以将此对象作为一组具有字符串,列表,元组等序列的索引进行传递。
Python slice函数使我们能够轻松创建逐步的子序列,而无需在现有序列上进行完整的迭代。
slice()函数参数
start:指定索引值的开始。
它是可选的,默认为无。停止:指定索引值的结尾。
这是必填参数。step:指定从索引开始到停止的步骤。
这是一个可选参数,默认为无。
Python slice对象具有只读数据属性(开始,停止和步进),这些属性返回参数值(或者默认值)。
让我们看看如何创建切片对象。
s = slice(1, 10, 2) # indexes 1,3,5,7,9 print(type(s)) print(s.start) print(s.stop) print(s.step) s = slice(5) # indexes 0,1,2,3,4 print(s.start) print(s.stop) print(s.step)
输出:
<class 'slice'> 1 10 2 None 5 None
Python slice对象没有单独使用,与序列一起创建子序列时很有用。
Python切片字符串
让我们看看如何对字符串使用slice函数。
我们将像普通索引一样传递slice对象,以从字符串中获取子字符串值。
s = slice(1, 10, 2) # indexes 1,3,5,7,9 print('abcde'[s])
输出:bd
请注意,如果切片索引大于序列的长度,则不会引发异常,并且将返回数据,直到最大可用索引为止。
我们还可以为slice()函数传递负值。
在这种情况下,迭代将反向执行,即从头到尾。
s = slice(-1, -3, -1) # indexes -1, -2 print('abcde'[s])
输出:ed
Python切片列表/数组
让我们看一个将slice()函数与列表或者数组一起使用的示例。
s = slice(0, 3) # indexes 0, 1, 2 my_list = [1, 2, 3, 4, 5, 6] print(my_list[s])
输出:[[1,2,3]
Python切片元组
我们也可以对元组使用切片,因为它是一个序列。
s = slice(2) my_tuple = [1, 2, 3, 4, 5, 6] print(my_tuple[s])
输出:[1,2]
Python slice扩展索引语法
由于切片在数值python中非常流行,因此有一种创建切片对象的简便方法。
a[start:stop:step]
我们来看一些使用速记方法进行切片的示例。
x = 'abcde' y = x[1:3:1] # 1,2 print(y) y = x[1:3] # 1,2 print(y) y = x[2:] # 2 to length of sequence print(y) y = x[:5:2] # 0,2,4 print(y) y = x[:] # copy of sequence print(y) y = x[-1:-4:-1] # reverse iteration, end to start print(y)
输出:
bc bc cde ace abcde edc