1. 任意可迭代的数据类型都可以使用序列拆分操作进行拆分,即*。用于赋值操作左边的两个或者多个变量时,其中的一个使用*进行引导,数据项将付值给该变量,而所剩下的数据项将赋值给带星号的变量。如:
first, *rest = [9, 2, -4, 8, 7]
print(first, rest)
输出结果:
9 [2, -4, 8, 7]
first, *mid, last = "Charles Philip Arthur George Windsor".split()
print(first, mid, last)
输出结果:
Charles ['Philip', 'Arthur', 'George'] Windsor
*direct, execut = "/usr/local/bin/gvim".split("/")
print(direct, execut)
输出结果:
['', 'usr', 'local', 'bin'] gvim
2. 小列表通可以使用列表字面值直接创建,但是长列表通常需要使用程序进行创建。对一系列整数,我们可以使用list(range(n))创建,或者如果只需要一个整数迭代子,使用range()就足以完成任务,但是对于更复杂的列表,使用for…in循环创建是一种常见的做法。如:生成给定时间范围内的闰年列表
leaps = []
for year in range(1900, 1940):
if(year%4 == 0 and year%100 !=0) or (year % 400 == 0):
leaps.append(year)
print(leaps)
输出结果:
[1904, 1908, 1912, 1916, 1920, 1924, 1928, 1932, 1936]
3. 浅拷贝和深拷贝
从下面的程序进行分析:
x = [34, 23, ["A", "B", "C"]]
y = x[:] # shallow copy
print(x)
print(y)
y[1] = 40
x[2][0] = "W"
print(x)
print(y)
import copy
x = [34, 23, ["A", "B", "C"]]
y = copy.deepcopy(x) # deep copy
print(x)
print(y)
y[1] = 40
x[2][0] = "W"
print(x)
print(y)
输出结果:
[34, 23, ['A', 'B', 'C']]
[34, 23, ['A', 'B', 'C']]
[34, 23, ['W', 'B', 'C']]
[34, 40, ['W', 'B', 'C']]
[34, 23, ['A', 'B', 'C']]
[34, 23, ['A', 'B', 'C']]
[34, 23, ['W', 'B', 'C']]
[34, 40, ['A', 'B', 'C']]
在对列表进行浅拷贝时,对嵌套列表[“A”, “B”, “C”]的引用将被复制。这意味着,x与y都将其第三项作为指向这一列表的对象引用,因此,对嵌套列表的任何改变,对于x,y都是可见的。如果我们确实需要一个独立的副本或者任意的嵌套组合,所以需要深拷贝。
NEXT。。。


-
- xiaomiking
-
1147 发帖6357 回复18609 积分
- 私信他 +关注
块
导
航
举报
请选择举报类别
- 广告垃圾
- 违规内容
- 恶意灌水
- 重复发帖