-
2020-12-28 23:08:37
python列表切片操作
python列表的切片操作,是一个使用频率非常高的技术,你应该认真学习掌握
所谓切片,就是从列表中截取某一部分,它的一般形式为 [start:end), 左闭右开. 对于列表的操作,离不开索引,做切片操作时,就必须指定截取的起始位置和结束位置
1. 指定开始和结束位置
lst = [3, 4, 1, 4, 2, 5, 8]
lst1 = lst[3:6]
print(lst1)
程序输出结果为
[4, 2, 5]
切片操作的一般模式是[start:end],shart 和 end 所指的都是索引,截取时,end索引位置的元素不会被截取,这一点尤其要注意,比如上面的示例中
lst1 = lst[3:6]
索引为6的元素是8,8没有出现在结果里,截取范围是3到6,6-3=3,最终切片截取的列表长度也正好是3
在使用切片时,也可以使用倒序索引
lst = [3, 4, 1, 4, 2, 5, 8]
lst1 = lst[2:-2]
print(lst1)
程序输出结果
[1, 4, 2]
2. 指定开始位置,不指定结束位置
lst = [3, 4, 1, 4, 2, 5, 8]
lst1 = lst[2:]
print(lst1)
如果不指定结束位置,那么切片操作会从开始位置截取到列表末尾,程序输出结果为
[1, 4, 2, 5, 8]
3. 指定结束位置,不指定开始位置
lst = [3, 4, 1, 4, 2, 5, 8]
lst1 = lst[:5]
print(lst1)
如果不指定开始位置,那么默认开始位置为0,程序输出结果为
[3, 4, 1, 4, 2]
4. 切片操作允许索引超出范围
lst = [3, 4, 1, 4, 2, 5, 8]
lst1 = lst[:11]
print(lst1)
上面的代码中,结束位置的索引设置为11,显然已经超出了列表索引的范围,但是却没有引发错误,对于这种情况,切片操作自身做了处理,如果结束位置的索引超出索引范围,那么就以列表长度作为结束位置
5. 指定切片间隔
关于切片间隔,已经在字符串切片操作做过讲解,本文不做赘述,只给出示例代码,想要了解切片间隔,可以去看这篇文章。
lst = [1, 2, 3, 4, 5]
print(lst[::-2]) # [5, 3, 1]
print(lst[::-1]) # [5, 4, 3, 2, 1]
6. 切片操作应用示例---分组
lst = [2, 3, 4, 1, 5, 2, 7, 1, 8, 9, 10, 31, 22, 34]
上面定义了一个列表,现在要求你从第一个元素开始,每三个一组求和,将所求得的和放入新列表sum_lst
示例代码
lst = [2, 3, 4, 1, 5, 2, 7, 1, 8, 9, 10, 31, 22, 34]
step = 3
sum_lst = []
for i in range(0, len(lst), step):
tmp = lst[i: i+step]
sum_lst.append(sum(tmp))
print(sum_lst)
更多相关内容 -
python列表切片和嵌套列表取值操作详解
2020-09-17 19:45:17今天小编就为大家分享一篇python列表切片和嵌套列表取值操作详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 -
Python列表切片用法示例
2021-01-20 04:13:15本文实例讲述了Python列表切片用法。分享给大家供大家参考,具体如下: Python中符合序列的有序序列都支持切片(slice),例如列表,字符串,元组。 格式:【start:end:step】 start:起始索引,从0开始,-1表示... -
Python列表切片操作实例总结
2021-01-01 04:21:34本文实例讲述了Python列表切片操作。分享给大家供大家参考,具体如下: 切片指的是列表的一部分。 1 基本用法 指定第一个元素和最后一个元素的索引,即可创建切片 。Python 会在到达指定的第二个索引之前元素后停止 ... -
列表切片
2021-02-20 18:02:39列表切片 -
Python 中的range(),以及列表切片方法
2020-12-24 09:45:34range()函数配合循环一块使用很方便,今天来整理一下这个函数...#list函数是将range的值列表化,这时候的输出为 1,2,3,4 (没有5!即不包括最后一个end的值) print(list(range(1,5,2))) #输出结果是 [1, 3] ,步长为2,而 -
Python列表切片常用操作实例解析
2021-01-20 04:01:21这篇文章主要介绍了Python列表切片常用操作实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 最近在爬一个网站的文档的时候,老师要求把一段文字切割... -
Python 列表切片
2021-03-18 00:55:35想必很多人都使用过列表的切片,通过切片可以从列表中获取一个或多个元素,但你真的了解切片?一、一般玩法>>> name = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']>>> name[0:2]# 获取 0 - 2 中间...想必很多人都使用过列表的切片,通过切片可以从列表中获取一个或多个元素,但你真的了解切片?
一、一般玩法
>>> name = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
>>> name[0:2]# 获取 0 - 2 中间的元素,不包括索引为 2 的元素
['a', 'b']
>>> name[:2]# 从 0 开始切,可省略 0
['a', 'b']
>>> name[1:]# 同样地,切到最后一个也可以省略最后的元素索引
['b', 'c', 'd', 'e', 'f', 'g', 'h']
二、列表步长
列表切片实际上还可以接收第三个参数:步长(默认情况为 1),来试试将其改为 2 会有说明变化?
>>> name[1:6:2]# 每隔 2 个元素才取出一个来
['b', 'd', 'f']
>>> name[::2]# 如果是从头到尾切,还可以写成这样
['a', 'c', 'e', 'g']
>>> name[::-1]# 同样地,步长还可以是负数,当步长为 -1 时,相当于复制一个反转的列表
['h', 'g', 'f', 'e', 'd', 'c', 'b', 'a']
>>> name[::-2]
['h', 'f', 'd', 'b']
容易出错的地方:
>>> name[7:2:-2]# 相当于从索引为 7 到 索引为 2 中,每隔 2 各元素取一个出来
['h', 'f', 'd']
>>> name[10:2:-2]# 对于超出索引的,默认是从最后一个元素开始取
['h', 'f', 'd']
>>> name[100:2:-2]
['h', 'f', 'd']
三、列表深浅拷贝
浅拷贝
>>> A = name[:]
>>> id(A)
2004289344072
深拷贝
>>> B = name
>>> id(B)
2004289245384
>>> id(name)
2004289245384
原理透析
Python 的变量就像一个 标签,或者说是一个名字,它通过指针指向元素值,可以理解为下图所示:
深拷贝指向原来的值,两者 ID一致,浅拷贝是从原来的值上复制一个副本出来。
四、面试题
1、列表 l = [1, 2, 3, 4, 5, 6, 7, 8, 9],那么 print(l[10:3:-2]) 为多少?
>>> l = [1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> print(l[10:3:-2])
[9, 7, 5]
2、输出值
A = 'apple'
B = A
B = 'banana'
print(A)
A 为字符串,是不可变类型,因此 A 的值始终不变,为:'apple'
3、输出值
A = ['apple']
B = A
B[0] = 'banana'
print(A)
= 是深拷贝,两者 ID 也相同,修改 B 会影响 A,修改 A 会影响 B,所以结果为: ['banana']
4、输出值
A = ['apple']
B = A[:]
B[0] = 'banana'
print(A)
[:] 是浅拷贝,只拷贝了第一层,修改不会有影响,所以结果为:['apple']
-
Python 列表切片操作
2021-12-08 15:25:29Python列表切片 切片是Python序列的重要操作之一,适用于列表、元组、字符串、range对象等。可以用切片截取列表中任何部分来获得一个新的列表,也可以进行元素的增、删、改。 在Python中,序列的序号即可以从左向右...Python列表切片
- 切片是Python序列的重要操作之一,适用于列表、元组、字符串、range对象等。可以用切片截取列表中任何部分来获得一个新的列表,也可以进行元素的增、删、改。
- 在Python中,序列的序号即可以从左向右以0开始依次增加,也可以从右向左以 -1
开始依次减少,因此通过的序号访问序列中的元素,同一个元素可以有两个序号。
1、列表元素的访问和修改
alist = [1, 3, 4, 5, 2] print(alist[0]) # 输出左边第0个位置的元素:1 print(alist[3]) # 输出左边第3个位置的元素 print((alist[-1])) # 输出最右边的元素 print(alist[2], alist[-2]) alist[0] = 99 # 修改列表元素的值 print(alist[0]) print(alist) print(len(alist))
1 5 2 4 5 99 [99, 3, 4, 5, 2] 5
len()是Python的内置函数,用于获得序列中元素的个数。
2、列表切片(重点)
切片是为了获得序列某个区间的元素序列。切片操作通过使用两个冒号分隔3个数字来实现,
- 第一个数字表示切片的开始位置,默认为0;
- 第二个数字表示切片的终止位置(但不包含该位置的元素),默认为列表的长度;
- 第三个数字为切片的步长,默认为1,当省略步长时,可以同时省略后一个冒号。
lie = [3, 4, 6, 7, 2, 10, 16] print(lie[:]) # 取全部元素 print(lie[0:]) # 取全部元素 print(lie[:-1]) # 取 除最后一个元素外的所有元素 print(lie[2:5]) # 取序号为2、3、4的元素,不包含最后一个序号的元素 print(lie[::2]) # 从0开始隔一个取一个元素 print(lie[1:5:2]) # 从1开始,每隔一个取一个元素,直到5为止 print(lie[::-1]) # 从右向左取全部成员 print(lie[5:0:-2]) # 从右向左隔一个取一个元素,不包含0
[3, 4, 6, 7, 2, 10, 16] [3, 4, 6, 7, 2, 10, 16] [3, 4, 6, 7, 2, 10] [6, 7, 2] [3, 6, 2, 16] [4, 7] [16, 10, 2, 7, 6, 4, 3] [10, 7, 4]
- lie[:-1]等价于 alist [0: -1:1],-1表示最后一个位置
3、切片应用
切片可用于获得子列表,或者修改、删除列表元素。
alist = [3, 4, 6, 7, 2, 10, 16, -8] alist_x = alist[1:6:2] print(alist_x) # 输出结果:[4, 7, 10] alist[1:6:2] = [28, 38, 48] # 修改元素值 print(alist) # 输出结果:[3, 28, 6, 38, 2, 48, 16, -8]
- 修改元素值时要求 “ = ” 左右两侧的元素个数相同
del alist[3:5] # 删除元素,删除第3、4元素,不包括第5元素 print(alist) # 输出结果:[3, 28, 6, 48, 16, -8]
- 字符串也可以按切片来进行操作,获取部分字符。
str = 'Python' print(str[0]) # 输出结果:P print(str[-1]) # 输出结果:n print(str[1:5:2]) # 输出结果:yn str[0] = 'y' print(str) # 输出结果报错
这里抛出异常,因为字符串是不可变序列,即不能修改其值,这里要修改就会出现错误。
-
Python 列表切片的四大常用操作
2021-02-03 10:29:48原创小白系列第7篇小白:小码哥,你能帮我解决几个问题吗?...列表切片是处理列表的部分元素,也就是把整个列表切开。它是整个列表中的重点内容,在以后的Python项目中经常使用到。语法:[start:end:...原创小白系列第
7
篇
小白:
小码哥,你能帮我解决几个问题吗?我想提取列表的某一段或者全部偶数位置的元素?这些信息在数据分析中经常遇到。
小白:另外,
通过前两篇文章
小码哥:
今天我们一起聊一下列表的切片。它是非常好用的一个点,肯定可以帮你解决问题。
01
什么是切片?
列表切片是处理列表的部分元素,也就是把整个列表切开。
它是整个列表中的重点内容,在以后的Python项目中经常使用到。
语法:
[start:end:step]
start:起始索引,从0开始
end:结束索引,但是end-1为实际的索引值
step:步长,步长为正时,从左向右取值。步长为负时,反向取值
注意切片的结果不包含结束索引,即不包含最后的一位,-1代表列表的最后一个位置索引
02
切片的四大常见操作
《扶摇》是去年很火的一个电视剧。咱们今天使用列表存储里面的角色,然后用切片把它分开。具体如下?
name_fuyao = ['扶摇','周叔','国公','无级太子','医圣','非烟殿主','穹苍']
接下来,咱们使用上面的列表信息,盘点一下列表切片的常见用法:
1. 利用切片,根据位置信息提取列表中的元素
# 指定开始和结束位置,注意不包括最后的位置元素
print('扶摇电视列表中第三个到第五个人物的名字:',name_fuyao[2:5])
# 不指定开始的位置,则默认从头开始
print('扶摇电视列表中前5个人物名字:',name_fuyao[:5])
# 不指定结束的位置,则从开始位置到结束
print('扶摇电视列表从6个人物的名字:',name_fuyao[5:])
# 开始和结束位置都不指定
print('扶摇电视列表中的名字:',name_fuyao[:])
# 负数索引表示返回距离列表末位相应距离的元素,也就是取列表中后半部分的元素
print('扶摇电视列表中最后三个人物的名字:',name_fuyao[-3:])
# 取偶数位置的元素
print('扶摇电视列表中偶数位置的人物是:',name_fuyao[::2])
# 取奇数位置的元素
print('扶摇电视列表中奇数位置的人物是:',name_fuyao[1::2])
以上代码输出结果是:
扶摇电视列表中第三个到第五个人物的名字: ['国公', '无级太子', '医圣']
扶摇电视列表中前5个人物名字: ['扶摇', '周叔', '国公', '无级太子', '医圣']
扶摇电视列表从6个人物的名字: ['非烟殿主', '穹苍']
扶摇电视列表中的名字: ['扶摇', '周叔', '国公', '无级太子', '医圣', '非烟殿主', '穹苍']
扶摇电视列表中最后三个人物的名字: ['医圣', '非烟殿主', '穹苍']
扶摇电视列表中偶数位置的人物是: ['扶摇', '国公', '医圣', '穹苍']
扶摇电视列表中奇数位置的人物是: ['周叔', '无级太子', '非烟殿主']
2. 利用切片逆序列表
# 逆序列表,相当于reversed(list)
print('扶摇电视列表中人物颠倒顺序:',name_fuyao[::-1])
以上代码输出结果是:
扶摇电视列表中人物颠倒顺序: ['穹苍', '非烟殿主', '医圣', '无级太子', '国公', '周叔', '扶摇']
3. 利用切片插入多个元素
# 在某个位置插入多个元素
# 也可以用同样的方法插入或者删除多个元素
name_fuyao[3:3]=['玄机','太渊','天煞']
print('扶摇电视列表中人物变为:',name_fuyao)
以上代码输出结果是:
扶摇电视列表中人物变为: ['扶摇', '周叔', '国公', '玄机', '太渊', '天煞', '无级太子', '医圣', '非烟殿主', '穹苍']
4. 利用切片复制列表
# 复制列表,相当于copy(),复制以后的新的列表是一个新的,可以对其操作
#注意如果new_name_fuyao = name_fuyao是变量赋值,也就是同一个值给了两个变量,一个改变了值 ,另外的两个值跟着修改了。
new_name_fuyao = name_fuyao[:]
print('新的列表元素:{}'.format(new_name_fuyao))
以上代码输出结果是:
新的列表元素:['扶摇', '周叔', '国公', '玄机', '太渊', '天煞', '无级太子', '医圣', '非烟殿主', '穹苍']
以上内容摘自《零基础轻松学 Python》
-
python 列表切片原理
2022-02-14 14:13:21python的切片函数是可以用来对列表进行自由切片; 参数定义: 1.通过索引期间访问线性结构的一段数据 2.list[start:stop],返回区间内的子序列,支持正负索引; 3.[:]表示从头到尾,全部元素取出,相当于copy()... -
Python列表切片详解
2021-08-16 19:01:20一、切片操作基本表达式:object[start_index : end_index : step] step:正负数均可,其绝对值大小决定了切取数据时的“步长”,而正负号决定了“切取方向”,正表示“从左往右”取值,负表示“从右往左”取值。当... -
只需四步,彻底掌握Python列表切片
2022-02-11 16:13:31Python的列表是一种有序的数据结构,可以用索引编号进行访问。 比如:a = [1,4,6,2,9,0,5] 此时,如果运行: print(a[2]) 将得到a[2]的值:6。 注意,我们会经常说“索引”(index),它的意思与... -
Python——列表切片
2021-04-23 18:49:49列表切片:你的菜单和我的菜单 我们将学习如何处理部分列表元素(Python中称为切片)。例如,当我们去餐馆吃饭点菜时,你的菜单和我的菜单有些时候是一模一样,也有些时候是部分菜名一样。那么如何根据我已经点好的... -
一文理清Python列表切片的操作细节
2021-04-27 03:46:58大家好,欢迎来到 Crossin的编程教室 !...切片热身列表的切片操作是指对其中单个或者多个索引对应元素进行的操作,具有如下几个特点:切片区间是左闭右开区间切片的下标可以是负数,当为负数时,意味着从后到前... -
Python列表切片操作
2021-12-08 23:38:14列表的切片操作 完整的切片表达式使用2个冒号分隔的3个参数[start : stop : step] 第一个数字表示切片开始的位置(默认为0),第二个数字表示切片截至(但不包含)位置(默认为列表长度),第三个数字表示切片的步长... -
python列表切片习题(一)
2022-04-28 13:52:07将列表降序排序后,使用切片显示前三名成绩,后三名的成绩,排在第3名到第5名成绩; 使用切片在列表首部插入一个100分,在尾部追加一个0分; 使用切片将此时的列表的后五个数全部替换为60; 使用切片删除倒数第1...