python数组的复制与列表中的pop

 更新时间:2022年04月06日 11:20:30   投稿:hqx  
这篇文章主要介绍了python数组的复制与列表中的pop, Python 中复制数组有只需使用赋值运算符、浅拷贝、深拷贝三种方法,下文详细内容需要的小伙伴可以参考一下

让我们看看如何在 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)

python:数组的复制与列表中的pop()_赋值运算符

我们可以看到两个数组都引用了同一个对象。

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)

python:数组的复制与列表中的pop()_数组_02

这次虽然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)

python:数组的复制与列表中的pop()_数组_03

这次在一个数组中所做的更改不会映射在其他数组中。

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()_数组_04

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")

python:数组的复制与列表中的pop()_数组_05

例二:

list1 = [ 1, 2, 3, 4, 5, 6 ]
 
print(list1.pop(), list1)

print(list1.pop(0), list1)

python:数组的复制与列表中的pop()_赋值运算符_06

例三:

list1 = [ 1, 2, 3, 4, 5, 6 ]
print(list1.pop(8))

python:数组的复制与列表中的pop()_python_07

例四:

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_08

到此这篇关于python数组的复制与列表中的pop的文章就介绍到这了,更多相关python数组复制与pop()内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用python实现一个简单的图片爬虫

    使用python实现一个简单的图片爬虫

    在本文中,我们将学习如何使用Python创建一个简单的图片爬虫,我们将利用requests库来发送HTTP请求,BeautifulSoup库来解析HTML页面,以及os和shutil库来下载和保存图片,通过这个教程,你将学会如何爬取网页上的图片并保存到本地,需要的朋友可以参考下
    2024-02-02
  • python pygame模块编写飞机大战

    python pygame模块编写飞机大战

    这篇文章主要为大家详细介绍了python pygame模块编写飞机大战,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-11-11
  • python 利用zmail库发送邮件

    python 利用zmail库发送邮件

    这篇文章主要介绍了python 如何利用zmail库发送邮件,帮助大家更好的理解和学习python,感兴趣的朋友可以了解下
    2020-09-09
  • Python操作word实现添加文字或图片水印

    Python操作word实现添加文字或图片水印

    这篇文章主要为大家详细介绍了如何使用Spire.Doc for Python在程序中的轻松添加文字和图像水印到Word文档,感兴趣的小伙伴可以跟随小编一起了解一下
    2023-10-10
  • Python备份Mysql脚本

    Python备份Mysql脚本

    特点是多平台,一个脚本内可以备份多个数据库,并分别打包上传到ftp进行备份。调用了mysqldump及tar来进行数据库dump及打包。 具体参数说明参见源文件
    2008-08-08
  • Python字符串处理实现单词反转

    Python字符串处理实现单词反转

    这篇文章主要为大家详细介绍了Python字符串处理实现单词反转的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • PyCharm活动模板设置步骤实现

    PyCharm活动模板设置步骤实现

    很多情况,我们在写代码都会存在经常要写一些简单且又重复的代码,Pycharm中的活动模板可以把这些使用频率很高的一些代码打包起来设置一个快捷键,本文就来介绍一下如何实现
    2023-12-12
  • python3.6生成器yield用法实例分析

    python3.6生成器yield用法实例分析

    这篇文章主要介绍了python3.6生成器yield用法,结合实例形式分析了Python3.6中生成器yield的功能、用法及相关操作注意事项,需要的朋友可以参考下
    2019-08-08
  • Python OpenCV使用阈值方法进行图像处理

    Python OpenCV使用阈值方法进行图像处理

    图像阈值处理是计算机视觉和图像处理中一种非常基础而重要的技术,通过阈值化操作,可以将图像的像素值按照一定标准分为两类,在 Python 中,OpenCV 提供了便捷的函数来实现各种阈值处理技术,本文将深入介绍如何在 OpenCV 中使用阈值方法进行图像处理
    2024-12-12
  • 基于python 微信小程序之获取已存在模板消息列表

    基于python 微信小程序之获取已存在模板消息列表

    这篇文章主要介绍了基于python 微信小程序之获取已存在模板消息列表的相关知识,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08

最新评论