python 切片与取值 超出索引范围的问题,浅拷贝

本文探讨了Python中使用list和string时如何通过index取值,以及切片操作如何涉及浅拷贝。当尝试访问超出列表长度的索引时,会引发`IndexError: list index out of range`。同时,介绍[:]和.copy()的浅拷贝特性,它们只拷贝外层元素,而内层元素通过引用共享。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python使用list和string时,可以用index取值

比如
list1 = [1,2,3]
list1[3]
list2 = []
list2[-1]
IndexError: list index out of range
访问:当访问索引超出其长度的列表 中元素时,无法返回值且报下标越界错误

list1 = []
list1[:-1]
list[1:4]
切片 :当切片时,是对原始列表进行切片复制,超出范围,则为空,不会报错

切片时,是对list进行浅拷贝

# 直接赋值,指向同一个内存地址
names1 = names

# 浅拷贝:重新分配一块内存,创建一个新的对象,里面的元素是指原对象中子对象的引用
names2 = list(names)# 数据类型本身的构造器
names3 = names1[:]  # 切片
names4 = copy.copy(names)

# 深拷贝:递归地拷贝原对象中的每一个子对象
names5 = copy.deepcopy(names)
names1[0] = 'haha'
names1[-1][0] = 44

引用 https://blog.youkuaiyun.com/xbinworld/article/details/104203829
[:]和.copy()都属于“浅拷贝”,只拷贝最外层元素,外层元素是独立内存;内层嵌套元素则通过引用方式共享,而非独立分配内存。使用 copy 模块的 copy.co

Python中的切片是一种非常强大的操作方法,用于从序列(如列表、元组、字符串等)中提取部分元素。切片可以让你快速访问一系列连续的数据,而无需遍历整个数据结构。 基本语法是 `sequence[start:stop:step]`: - `start` 表示开始索引,默认是从0开始,包括起始位置在内的第一个元素会被选取。 - `stop` 表示结束位置,不包含最后一个元素,只到指定的位置前一个元素为止。 - `step` 指定每次移动的距离,默认是1,即默认按照顺序选取所有元素。 下面是一些例子说明如何使用切片: ### 示例 1: 列表的简单切片 ```python my_list = [0, 1, 2, 3, 4, 5] print(my_list[1:4]) # 输出: [1, 2, 3] ``` 这里从索引为1的位置开始,直到4之前结束(不包括第4个元素),所以结果是 `[1, 2, 3]`。 ### 示例 2: 使用负数索引 你可以使用负数作为起始点和结束点来倒序读取序列: ```python print(my_list[-3:]) # 输出: [3, 4, 5] ``` 这将从第三个元素(从右向左计数)到最后一个元素提取出一个子序列。 ### 示例 3: 高级切片 - 使用步长 步骤不仅可以跳过元素,还可以选择正反方向: ```python print(my_list[::-1]) # 输出: [5, 4, 3, 2, 1, 0] ``` 这里 `[::-1]` 表示从后向前读取,并且每一步都选中一个元素,因此得到的是列表的所有元素逆序。 ### 示例 4: 切片中间带空格 当你希望从特定位置开始,但不包含该位置的元素,你可以调整参数: ```python print(my_list[:4]) # 输出: [0, 1, 2, 3] print(my_list[3:]) # 输出: [3, 4, 5] ``` 第一个例子表示从头开始到第四个元素结束,第二个例子则从第四个元素开始到结尾。 以上就是Python中关于切片的基本用法,它对于处理大量数据或需要动态地处理数据的部分很有帮助。通过掌握切片技巧,可以提高代码的效率并减少错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值