目录
1 使用赋值运算符2 浅拷贝3 深度拷贝4 深度拷贝进阶让我们看看如何在 Python 中复制数组。 有 3 种复制数组的方法:
只需使用赋值运算符。浅拷贝深拷贝1 使用赋值运算符
我们可以使用赋值运算符 (=) 创建数组的副本。
语法:
new_arr = old_ arr
在 Python 中,Assignment
语句不复制对象,它们在目标和对象之间创建绑定。 当我们使用 = 运算符时,用户认为这会创建一个新对象; 好吧,事实并非如此。 它只创建一个共享原始对象引用的新变量。
示例:
from numpy import * arr1 = array([2, 6, 9, 4]) print(id(arr1)) arr2 = arr1 print(id(arr2)) arr1[1] = 7 print(arr1) print(arr2)
我们可以看到两个数组都引用了同一个对象。
2 浅拷贝
一个浅副本意味着构造一个新的集合对象,然后用对原始中找到的子对象的引用填充它。 复制过程不会重复,因此不会创建子对象本身的副本。 在浅拷贝的情况下,对象的引用被复制在另一个对象中。 这意味着对对象的副本所做的任何更改都会在原始对象中反映。 我们将使用视图view()函数来实现浅副本。
示例:
from numpy import * arr1 = array([2, 6, 9, 4]) print(id(arr1)) arr2 = arr1.view() print(id(arr2)) arr1[1] = 7 print(arr1) print(arr2)
这次虽然2个数组引用了不同的对象,但在更改一个数组值的时候,另一个的值也被更改。
3 深度拷贝
深度拷贝是一个过程,其中复制过程递归地发生。 它意味着首先构建一个新的存储对象,然后用原稿中找到的子对象的副本递归地填充它。 在深度拷贝的情况下,将对象的副本复制到另一个对象中。 这意味着对对象的副本所做的任何更改都不反映在原始对象中。 我们将使用copy()函数来实现深度副本。
示例:
from numpy import * arr1 = array([2, 6, 9, 4]) print(id(arr1)) arr2 = arr1.copy() print(id(arr2)) arr1[1] = 7 print(arr1) print(arr2)
这次在一个数组中所做的更改不会映射在其他数组中。
4 深度拷贝进阶
如果您正在处理numpy矩阵,则numpy.copy()将为您提供深度拷贝。 但是,如果您的矩阵是列表的列表,那么请考虑旋转图像90度的任务中使用以下方法:
示例:
import copy def rotate_matrix(image): copy_image_one = copy.deepcopy(image) print("Original", matrix) print("Copy of original", copy_image_one) N = len(matrix) for row in range(N): for column in range(N): copy_image_one[row][column] = image[row][N-column-1] print("After modification") print("Original", matrix) print("Copy", copy_image_one) copy_image_two = [list(row) for row in copy_image_one] for row in range(N): for column in range(N): copy_image_two[column][row] = copy_image_one[row][column] return copy_image_two if __name__ == "__main__": matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] print("Rotated image", rotate_matrix(matrix))
Python列表POP()是Python中的内置函数,该函数删除并返回列表或给定索引值的最后一个值。
语法:
list_name.pop(index)
参数:
index(可选) - 弹出并删除索引处的值。 如果未给出索引,则会弹出并删除最后一个元素。返回值:列表中的最后一个值或给定的索引值。
例外:当索引超出范围时,它会返回IndexError
。
例一:
list1 = [ 1, 2, 3, 4, 5, 6 ] print(list1.pop()) print("New List after pop : ", list1, "\n") list2 = [1, 2, 3, ("cat", "bat"), 4] print(list2.pop()) print(list2.pop()) print(list2.pop()) print("New List after pop : ", list2, "\n")
例二:
list1 = [ 1, 2, 3, 4, 5, 6 ] print(list1.pop(), list1) print(list1.pop(0), list1)
例三:
list1 = [ 1, 2, 3, 4, 5, 6 ] print(list1.pop(8))
例四:
fruit = [["Orange","Fruit"],["Banana","Fruit"], ["Mango", "Fruit"]] consume = ["Juice", "Eat"] possible = [] for item in fruit : for use in consume : item.append(use) possible.append(item[:]) item.pop(-1) print(possible)
到此这篇关于python数组的复制与列表中的pop的文章就介绍到这了,更多相关python数组复制与pop()内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
X 关闭
X 关闭
- 15G资费不大降!三大运营商谁提供的5G网速最快?中国信通院给出答案
- 2联想拯救者Y70发布最新预告:售价2970元起 迄今最便宜的骁龙8+旗舰
- 3亚马逊开始大规模推广掌纹支付技术 顾客可使用“挥手付”结账
- 4现代和起亚上半年出口20万辆新能源汽车同比增长30.6%
- 5如何让居民5分钟使用到各种设施?沙特“线性城市”来了
- 6AMD实现连续8个季度的增长 季度营收首次突破60亿美元利润更是翻倍
- 7转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 8充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 9好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 10名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?