什么叫切片
? ? ? ? 对于切片,最通俗易懂的解释就是截取片段,例如在列表中lst=[1,2,3],我想选取其中的1或者2或者1,2又或者是1,2,3,那么我就可以通过切片操作轻松地得到我想要的数据。
切片操作[a: b: c]
? ? ? ? [a: b: c],其中a是我们想切片的起始位置,b是最终位置,注意,并不包含b,在这里可以用数学来解释[a,b)右边是像这样的开区间,我们切片的结果就是这个左闭右开的区间,有了这个知识过后我们可以用另外一种方式来在日常开发中更简单的运用他,a是切片开始的地方,b-a就是我们截取的个数。再来说c,c叫步长(默认为1),当c=-1时,我们切片的顺序就是倒序,当c=2时,我们切片的内容就是每隔一个数字获取一次数字,当c=3时每隔两个数字获取一次数字,以此类推。
? ? ? ? 不管是a还是b还是c都有一个默认值,a的默认值是0,b的默认值是列表长度,c的默认值是1,当我们没有特殊需要的时候就可以在切片操作中省略掉abc例如最简单的切片[ : ],这样就表示得到列表中的所有数据(从开始到结尾)([::]的作用和他相同);
? ? ? ? 再举几个简单的例子方便理解:
????????????????[2 : ]:表示切片从第三个数(第三个数下标为2)开始到最后一个数。
? ? ? ? ? ? ? ? [5: 2: -1]: 表示从下标为五的数字开始倒序切片到下标为2的数。(-1表示倒序)
? ? ? ? ? ? ? ? 注意,就算是倒序,切片的顺序也是从左往右的,所以倒序的时候,起始位置和最终位置也需要倒过来写,否则切到的列表将是空列表。
? ? ? ? ? ? ? ? [2: 5: 2]: 表示从下标为2的数字开始切片到下标为5的数字,每隔一个数字得到一个数字。例如lst =? [1,2,3,4,5,6],那么得到的就会是[3,5]。
列表的进阶内容(重要)
? ? ? ? 我们切片之后的列表不是原本的列表,而是一个新的列表,这个列表的地址已经不再是原本列表的地址了。(重要)
? ? ? ? 我们可以灵活地运用切片操作来修改,删除列表中的元素,切片与使用下标访问列表元素的方法不同,切片操作不会因为下标越界而抛出异常,而是在列表尾部截断或者返回一个空列表,代码更加可塑。
? ? ? ? 当切片作用于元组或者字符串时,只能用来读取其中的部分元素。
|