python-列表copy函数


'''
列表的copy函数
    1、copy函数的功能
        将当前的列表复制一份相同的列表,新列表与旧列表内容相同,但内存空间不同

    2、copy函数的用法
        list.copy()  -> 该函数无参数,返回一个一模一样的列表
        示例:
        old_list = ['a','b','c']
        new_list = old_list.copy()
        print(new_list)

    3、copy函数与2次赋值的区别
        a =[1,2,3]
        b = a
        二次赋值的变量与原始变量享有相同的内存空间
        copy函数创建的新列表与原始列表不是一个内存空间,不享有数据变更
        copy函数在功能上属于浅拷贝
        浅拷贝的概念:通俗的说,我们有一个列表a,列表里面的元素还是列表,当我们拷贝初新列表b后,无论是a还是
        b的内部的列表中的数据发生了变化,相互之间都会受到影响,叫做浅拷贝。
        浅拷贝:只会对第一层的数据,进行拷贝,要进行更深层次,就不行
'''
print('浅拷贝:')
a = [[1,2,3],[5,6,7]]
print('a:',a)
b = a.copy()
print('b:',b)

b[0].append(10)
print('b:',b)

print('a:',a)

'''
    深拷贝含义:不仅对第一层数据,进行了copy,对深层的数据也进行copy,
    原始变量和新变量完完全全不共享数据,叫做深拷贝
'''
import copy
print('深拷贝:')
a = [[1,2,3],[4,5,6]]
b = copy.deepcopy(a)

print('*'*30)
print('b',b)
b[0].append(10)
print('b:',b)
print('a:',a)

print('*'*40)
old_list = ['python','diango','flask']

new_list = old_list
new_list.append('tornado')

print(new_list)
print(old_list)
print(id(new_list),id(old_list))

old_list.remove('tornado')
print(new_list,old_list)

# old_list.clear()
# print(old_list,new_list)

del new_list
print(old_list)

'''
本题考查的是对深拷贝与浅拷贝的理解,深拷贝:与原始变量内存空间不相同,不共享数据。浅拷贝:浅拷贝是对最外层的数据创建一个新的内存空间来存储,而对内层的数据内存地址进行引用。所以C选项正确。

深拷贝内存空间不同,不共享数据;浅拷贝是对最外层的数据创建一个新的内存空间来存储,而对内层的内存地址进行引用


'''

print('*'*50)
old_list_copy = ['python','diango','flask']
new_list_copy = old_list_copy.copy()
print(old_list_copy,new_list_copy)
new_list_copy.append('tornado_copy')
print(old_list_copy,new_list_copy)
print(id(old_list_copy),id(new_list_copy))



text = [4,9]
content = text.copy()
text.append(13)
content.append([5,10])
print(content)
  • 5
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值