python 二维列表切片_彻底搞懂Python列表切片

本文深入探讨Python中列表切片的概念,包括正负索引、切片表达式和多种切片情况,如单个元素、倒置列表、混合索引及多层列表切片。了解这些将帮助你更好地掌握Python列表的使用。
Python3.9

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

5dbe6160de900d39464e5e94a9ec5b3b.png

文章的开始,我先来说一下自己对于Python中列表的理解,**列表**在我的理解中很简单,就是一个**容器**,可以存储任意数据类型的集合,这个容器的容量也肯定是有上限的,在32位python的存储限制是 536870912 个元素,64位python的存储限制是1152921504606846975 个元素。列表是可以根据它所存储的元素来进行内存空间的扩大,所以从这点来说列表是**可变的**;而列表的另外一个特点就是**有序的**,列表切片正是利用这一个特点来进行操作的。

一、Python中列表切片的依据--索引

在Python中列表的索引可以分为**从左往右的正索引**和**从右往左的负索引**,咱们就以li=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]这个简单的列表为例

4c92220de7f30564dda9c9411ff2452f.png

其中**正索引是从左往右从0开始依次增加的**,**而负索引则是从右往左从-1开始依次变小,**当我们需要取出列表中某一个值的时候就可以使用它的索引来进行取出

二、Python中列表切片的常用方式

```python
列表切片的基本表达式:list[start_index:end_index:step]
"""
start_index:表示起始索引,该参数如果省略,则表示从该列表的最起始位置开始取值,至于是从右边还是左边的起始位置,这个需要看setp参数的正负来决定的
end_index:表示结束索引(不包含该索引对应的值),如果该参数没有写的话,表示一直取到该列表的‘终点’,至于是正索引的终点还是负索引的终点,同样是取决于setp参数的正负
step: 步长,正负都可以,该参数的绝对值大小决定了列表切片时的步长,而正负号则是决定了切片的方向,为正数时,表示从左往右取值,为负数时表示从右往左取值。同样,step参数也可以省略不写,省略不写时,表示默认步长为1,即从左往右以步长为1取值。“切取方向非常重要!”
"""
 
```

完整的列表切片表达式包含有两个冒号‘’:‘’ (切记冒号是英文的),这两个冒号分别用于分割起始索引,结束索引和步长

三、Python中的列表切片

直接上代码

```python 
# 以li = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]为例
```

1. 当所需要的的元素是某单个元素时

```python 
print(li[1])
# 2
print(li[9])
# 10
print(li[-5])
# 6
# 前面已经说过了,当我们需要取出列表中某一个值的时候就可以使用它的索引来进行取出
```

2. 当所需要将列表进行倒置时

```python
print(li[::-1])
# [10,9,8,7,6,5,4,3,2,1]
```

3. 当起始索引和结束索引都为正的时候

```python
print(li[1:5])
# [2,3,4,5]
# 步长为空默认为1 从左往右取值 起始索引1到结束索引5同样表示的是从左往右取值
print(li[8:2])
# []
"""
没有错 就是空列表,步长省略表示默认为1,从左往右取值,但是起始索引和结束索引同为正,却是从8到2表示从右往左取值,所以为空
"""    
print(li[1:5:-1])
# []
"""
同样是空列表,因为当步长为-1表示从右往左取值,而起始索引和结束索引则都为正表示从左往右取值,两者矛盾取不到值
"""
print(li[:5:-1])
# [10,9,8,7]
"""
步长为-1,表示从右往左取值,而起始索引没有写表示从起始开始,而因为是是从右往左取值,所以这个起始位置就是10,及索引为9到索引为5(不包括5)之间的元素
"""
```

4. 当起始索引和结束索引都为负的时候

```python 
print(li[-1:-7])
# []
"""
步长默认为1,从左往右取值,而起始索引-1到结束索引-6决定了从右往左取值,两者矛盾,所以为空。
索引-1在-6的右边
"""
print(li[-5::-1])
# [6, 5, 4, 3, 2, 1]
# 步长为-1,从右往左取值,从起始索引-5开始,一直取到“起点”。
```

5. 起始索引和结束索引正(+)负(-)混合索引的情况

```python 
print(li[1:-7:-1])
#  []
'''
起始索引1在结束索引-7的左边,因此从左往右取值,但步长为-1则决定了从右往左取值,两者矛盾,因此为空。
'''
print(li[-1:7:-1])
# [10, 9]
# 起始索引-1在结束索引7的右边,因此从右往左取值,而步长-1同样决定了从右往左取值,因此结果正确
```

6. 多层列表切片

```python 
print(li[:9][3:7][-1:])
# [7]
"""
相当于: 
li[:9]          =[1, 2, 3, 4, 5, 6, 7, 8, 9]
li[:9][3:7]     =[4, 5, 6, 7]
li[:9][3:7][-1:]=[7]
理论上是可以无限的进行多层切片,只要上一次的切片结果不为空
"""
```

7. 取奇偶数

```python 
# 我们可以通过切片来进行取出li中的奇数和偶数
# 奇数
print(li[::2])
# [1, 3, 5, 7, 9]
print(li[1::2])
# [2, 4, 6, 8, 10]

```

8. 替换一部分值

```python 
lip[2:6] = [6,6,6,6]
print(li)
# [1, 2, 6, 6, 6, 6, 7, 8, 9, 10]
```

四、敲黑板

最后咱们来个总结

Python是一门很强大的语言!!!

列表切片的方向取决于起始索引、结束索引以及步长,当起始索引在结束索引右边是就是从右往左取值,同理反之。

当列表通过索引取单个元素是返回的是这个元素而非一个列表,当取连续的几个值时返回的是一个列表

步长的正负是一定要考虑的,特别是当不写步长的时候

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值