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]]