[分享] Python3基础Lesson6
546 查看
2 回复
 楼主 | 发布于 2018-04-02 | 只看楼主
分享到:

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


(0 ) (0 )
回复 举报

回复于 2018-04-02 沙发

多谢分享~~~
(0 )
评论 (0) 举报

回复于 2018-04-02 2#

谢谢分享
(0 )
评论 (0) 举报
  • 发表回复
    0/3000





    举报

    请选择举报类别

    • 广告垃圾
    • 违规内容
    • 恶意灌水
    • 重复发帖

    全部板块

    返回顶部