python切片操作

举报
kwan的解忧杂货铺 发表于 2024/09/05 01:53:31 2024/09/05
【摘要】 一.基本介绍 1.基本介绍在 Python 中,切片是一种非常强大的特性,它允许你从序列(如列表、元组、字符串等)中提取子序列。切片的基本语法如下:sequence[start:stop:step]start 是切片开始的位置索引(包含该位置)。stop 是切片结束的位置索引(不包含该位置)。step 是步长,表示选择元素的间隔,默认为 1。 2.倒序输出my_list = [0, 1, ...

一.基本介绍

1.基本介绍

在 Python 中,切片是一种非常强大的特性,它允许你从序列(如列表、元组、字符串等)中提取子序列。切片的基本语法如下:

sequence[start:stop:step]
  • start 是切片开始的位置索引(包含该位置)。
  • stop 是切片结束的位置索引(不包含该位置)。
  • step 是步长,表示选择元素的间隔,默认为 1。

2.倒序输出

my_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
sub_list = my_list[5::-1]  # 从索引5到索引0(不包括0),步长为-1
print(sub_list)

[5, 4, 3, 2, 1, 0]

3.不包含 0

my_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
sub_list = my_list[5:0:-1]  # 从索引5到索引0(不包括0),步长为-1
print(sub_list)

[5, 4, 3, 2, 1]

4.正序输出

my_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
sub_list = my_list[:5]  # 从索引5到索引0(不包括0),步长为-1
print(sub_list)

[0, 1, 2, 3, 4]

5.减一位输出

my_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
sub_list = my_list[5-1::-1]  # 从索引5到索引0(不包括0),步长为-1
print(sub_list)

[4, 3, 2, 1, 0]

6.reversed 函数

my_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
sub_list = reversed(my_list[:5])  # 从索引5到索引0(不包括0),步长为-1
print(sub_list)
print(type(sub_list))
for sub in sub_list:
    print(sub)

<list_reverseiterator object at 0x108485d50>
<class ‘list_reverseiterator’>
4
3
2
1
0

二.例子演示

下面是一些切片的例子:

  1. 获取序列的一部分:

    my_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    sub_list = my_list[2:5]  # 结果是 [2, 3, 4]
    
  2. 从序列的开始或结束获取:

    sub_list = my_list[:5]  # 从开始到索引5(不包括5),结果是 [0, 1, 2, 3, 4]
    sub_list = my_list[5:]  # 从索引5到结束,结果是 [5, 6, 7, 8, 9]
    
  3. 反向切片:

    sub_list = my_list[::-1]  # 反向整个列表,结果是 [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
    sub_list = my_list[-3:-1]  # 从倒数第三个元素到倒数第二个元素,结果是 [7, 8]
    
  4. 步长切片:

    sub_list = my_list[::2]  # 从开始到结束,步长为2,结果是 [0, 2, 4, 6, 8]
    sub_list = my_list[1::2]  # 从索引1开始,步长为2,结果是 [1, 3, 5, 7, 9]
    

三.实现

1.从索引 5 到索引 0

在 Python 中,如果你想要通过切片从索引 5 到索引 0(不包括索引 0),你可以使用负数索引和步长。负数索引表示从序列的末尾开始计数,其中 -1 是最后一个元素的索引。步长为负数表示反向迭代。

以下是如何实现从索引 5 到索引 0 的切片:

my_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
sub_list = my_list[5:0:-1]  # 从索引5到索引0(不包括0),步长为-1

在这个例子中,sub_list 的结果将是:

[5, 4, 3, 2, 1]

这是因为切片从索引 5 开始,到索引 0 结束(不包括索引 0),并且每次迭代向前(向列表的开始方向)移动一个位置。注意,索引 0 是切片的结束索引,但由于切片不包括结束索引,所以索引 0 处的元素不会被包含在结果中。

2.反向遍历

if clear_index > 0:
   for message in reversed(sorted_messages[:clear_index]):
       return None
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。