day 11:列表推导式与深浅拷贝

本文深入解析Python中的列表推导式,展示如何利用简洁代码实现复杂功能,如数字组合、字符串组合及列表操作。同时,详细解释深拷贝与浅拷贝的区别,包括内存地址的引用与数据的完全复制,通过实例演示不同情况下的数据变化。
摘要由CSDN通过智能技术生成

1、列表推导式

通过使用列表推导式,用简洁的代码实现复杂功能
例如:
打印10与10各个数字的组合

res = [(x,y) for x in range(10) for y in range(10)]
print(res)

打印偶数奇数的组合

res = [(x,y) for x in range(10) if x%2==0 for y in range(10)
       if y%2==1]
print(res)

打印ABC与123的组合

res = [x+y for x in "ABC" for y in "123"]
print(res)#会先循环先写的

练习:
给一列表M打印要求数据

#给一列表M打印要求数据
M = [[1,2,3],[4,5,6],[7,8,9]]
#求 1 4 7
res = [var[0] for var in M]
print(res)
#求1 5 9
res = [M[i][i] for i in range(len(M))]
print(res)

给一列表,求每一元素的长度的列表

#涉及到每一个元素就使用for var in L
L = ["continue","else","if","break","pass","def"]
#res = [len(L[i]) for i in range(len(L))]
res = [len(var) for var in L]
print(res)

2、深浅拷贝

1、赋值是同一内存地址,b指向a的内存地址,当a的值发生改变的时候,b也会变

a = [1,2,3,4,[5,6]]
b = a
a.append(7)
print(b)

2、浅拷贝,拷贝第一层,第二层还是拷贝地址

import copy
a = [1,2,3,4,[5,6]]
c = copy.copy(a)
a[4].append(7)
a.append(8)
print(c)

3、深拷贝,拷贝所有数据,全部新开辟一块内存,a变,d不会有变化

a = [1,2,3,4,[5,6]]
d = copy.deepcopy(a)
a[4].append(7)
a.append(8)
print(d)

以上三条输出分别为:
[1, 2, 3, 4, [5, 6], 7]
[1, 2, 3, 4, [5, 6, 7]]
[1, 2, 3, 4, [5, 6]]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值