首页 > 其他分享 >深浅copy和第三方模块下载与安装

深浅copy和第三方模块下载与安装

时间:2023-06-14 19:46:32浏览次数:42  
标签:str2 list1 list2 pip 深浅 模块 print copy

深浅copy

不可变对象,深浅copy效果一样

可变对象,深浅copy还是有区别的

浅copy

字典、列表、集合结果都一样

list1 = [1, 2, 3]
list2 = list(list1)
print(list2)
print("list1==list2 ?",list1==list2)
print("list1 is list2 ?",list1 is list2)
[1, 2, 3]
list1==list2 ? True
list1 is list2 ? False

浅copy就是值一样,但是内存地址不同,因为其为新变量重新分配了一块内存,和原来不同。

列表还可以通过切片操作符来完成。

list1 = [1, 2, 3]
list2 = list1[:]
print(list2)
print("list1 == list2 ?",list1 == list2)
print("list1 is list2 ?",list1 is list2)

copy.copy()

list1 = [1, 2, 3]
list2 = copy.copy(list1)
print(list2)
print("list1 == list2 ?",list1 == list2)
print("list1 is list2 ?",list1 is list2)

以上三种方式结果都一样。

对于元组,使用 tuple() 或者切片操作符 ‘:’ 不会创建一份浅拷贝,相反它会返回一个指向相同元组的引用。因为其不会创建一份浅copy,因为其新开辟的内存存储是原对象的子对象的引子,而没有创建新的对象来存储原对象子对象的引子,所以不是浅copy。

字符串与元组同理。

str1 = 'operation'
str2 = str1[:]
print(str2)
print("str1 == str2 ?",str1 == str2)
print("str1 is str2 ?",str1 is str2)

operation
str1 == str2 ? True
str1 is str2 ? True

深拷贝

是完全重新copy,分为两个完全不同的个体。

浅copy会出现的问题:

虽然拷贝前后地址不同,但是他们共享了部分内存,就如下,列表中的列表就是共享的内存,所以在往列表中的列表添加数据时,拷贝前后的数据则一样。因为浅copy只是复制了一层。

而深copy则是数值与内存都复制了。

import copy

a = [1, [2, 3]]
b = copy.deepcopy(a)
c = copy.copy(a)

a[1].append(4)


print(f"原始列表a:{a}") # [1, [2, 3, 4]]
print(f"深拷贝出来的列表b:{b}") # [1, [2, 3]]
print(f"浅拷贝出来的列表c:{c}") # [1, [2, 3, 4]]

第三方模块的下载与安装

内置的模块不能满足我们的需求,所以,大多数的时候都需要借助于第三方模块

下载第三方模块需要使用pip工具:

pip install 模块名 # 不跟版本号,默认装的是最新版本
pip install django
pip install 模块名==版本号
pip install django == 1.1
pip install openpyxl==2.1.4

pip list

另一个方式可以用pycharm安装

换源:

把下载的路径切换到国内
"""
豆瓣:http://pypi.douban.com/simple/
阿里云:http://mirrors.aliyun.com/pypi/simple/
华为云:https://repo.huaweicloud.com/repository/pypi/simple
清华大学:https://pypi.tuna.tsinghua.edu.cn/simple
中科大:https://pypi.mirrors.ustc.edu.cn/simple/
"""

 如何换源
方式1:
pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple # 临时换源
永久换源
# 你自己搜索windows下如何永久换源
方式2:
pycharm中换源

 

标签:str2,list1,list2,pip,深浅,模块,print,copy
From: https://www.cnblogs.com/YeeQX/p/17481183.html

相关文章

  • MT6761芯片规格书_MTK安卓核心板主板通讯模块
    MT6761安卓核心板具有集成的蓝牙、fm、WLAN和gps模块,是一个高度集成的基带平台,包括调制解调器和应用处理子系统启用LTE/LTE-A和C2K智能电话应用。该芯片集ARM®Cortex-A53集成到2.0GHz和强大的多标准视频编解码器中。此外,一组广泛的接口D连接外围设备包括到摄像头、触摸屏显示......
  • 模块一:time模块
    一、time模块time模块是Python的标准库之一,用于处理时间相关的操作。它提供了各种函数和类,用于获取、表示和处理时间信息。1.1时间戳时间戳是指从某个固定时间(通常是1970年1月1日午夜)到现在的秒数。time模块中的time()函数可以获取当前时间的时间戳。importtimetimestamp......
  • 模块知识点总结
    当讲解Python模块时,可以按照以下详细的内容和示例进行讲解:一、什么是模块?A.定义模块:模块是一个包含了Python代码的文件,可以包含变量、函数、类和可执行的代码。模块通过将代码组织成单独的文件,方便重复使用和管理。B.模块的作用和意义:提供了代码的重用性,避免重复编写相......
  • 实验7 面向对象编程与内置模块
    实验任务1task1.py1classAccount:23def__init__(self,name,account_number,initial_amount=10):4self._name=name5self._card_no=account_number6self._balance=initial_amount7defdeposit(self,amount):......
  • 实验7 面向对象编程与内置模块
    task1源代码'''银行账户数据:持卡人姓名、账号、当前余额操作:取款、存款、打印账户信息、返回账户余额'''classAccount:'''一个模拟银行账户的简单类'''def__init__(self,name,account_number,initial_amount=10):''......
  • 面向对象编程和内置模块
    task11classAccount:23def__init__(self,name,account_number,initial_amount=10):4self._name=name5self._card_no=account_number6self._blance=initial_amount78defdeposit(self,amount):9......
  • 实验7 面向对象编程与内置模块
    实验任务1task1.py1classAccount:23def__init__(self,name,account_number,initial_amount=10):4self._name=name5self._card_no=account_number6self._balance=initial_amount7defdeposit(self,amount):......
  • 实验7 面向对象编程与内置模块
    task1源代码:classAccount:def__init__(self,name,account_number,initial_amount=10):self._name=nameself._card_no=account_numberself._balance=initial_amountdefdeposit(self,amount):self._balance+=amount......
  • 实验7 面向对象编程与内置模块
    task1'''银行账户数据:持卡人姓名、账号、当前余额操作:取款、存款、打印账户信息、返回账户余额'''classAccount:'''一个模拟银行账户的简单类'''def__init__(self,name,account_number,initial_amount=10):'''构造新......
  • 模块(os、json、pickle)
    os模块主要与操作系统打交道,是与操作系统交互的一个窗口1.os.mkdir('dirname')创建单级目录dirname2.os.makedirs('dirname1/dirname2')生成多层递归目录dirnmae1下的dirname23.os.rmdir('dirname')删除空白单级目录dirname,若dirname不为空则无法删除,并报错 ......