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