深拷贝 deep 和浅拷贝shallow copy
浅拷贝
- 是指复制过程中,只复制一层变量,不会复制深层变量绑定的对象
- 例
>>> L=[3.1,3.2]
>>> L1=[1,2,L]
>>> L1
[1, 2, [3.1, 3.2]]
>>> L2=L1.copy()
>>> L2
[1, 2, [3.1, 3.2]]
>>> L[0]=3.14
>>> L1
[1, 2, [3.14, 3.2]]
>>> L2
[1, 2, [3.14, 3.2]]
深拷贝
import copy //到放copy模块
L=[3.1,3.2]
L1=[1,2,L]
L2=copy.deepcopy(L1) //深拷贝
L[0]=3.14
L1 // [1,2,[3.14,3.2]]
L2 // [1,2,[3.1,3.2]] //此列表不受影响
注:深拷贝通常只对可变得对象进行深层复制,不可变对象通常不会进行复制
>>> L1
[1, 2, [3.14, 3.2]]
>>> L1[2][0]=3.1
>>> L1
[1, 2, [3.1, 3.2]]
列表与字符串比较
- 列表与字符串都是序列,元素之间有先后关系
- 列表字符串是不可变序列,而列表是可变的序列
- 字符串中每个元素只能储存字符,而列表可以存储任意类型的字符
- 列表和字符串都是可迭代对象
字符串文本解析方法 split和join
S.split(sep=None) 将字符串使用sep使用sep作为分隔符分隔S字符串,返回分隔后的字符串列表,当不给定参数时,用空白字符作为分隔符分隔。
S.join(interable) 用可迭代对象中的字符串,返回一个中间用S进行分隔的字符串
>>> s='hello world'
>>> s.split()
['hello', 'world']
>>> s.split('o')
['hell', ' w', 'rld']
>>> s.split('l')
['he', '', 'o wor', 'd']
>>> '/'.join(s)
'h/e/l/l/o/ /w/o/r/l/d'
>>> L=['qqq','ddd','eee']
>>> '/'.join(L)
'qqq/ddd/eee'
列表推导式 list comprehension
- 列表推导式是用可迭代对象依次生成带有多个元素的列表的表达式
- 作用:用简易方法生成列表
- 语法:[表达式 for 变量 in 可迭代对象]
或
[表达式 for 变量 in 可迭代对象 if 真值表达式]
>>> L=[x**2 for x in range(1,10)]
>>> L
[1, 4, 9, 16, 25, 36, 49, 64, 81]
>>>
列表推导式的嵌套
-
语法:
[表达式1 for 变量1 in可迭代对象1 if 真值表达式1 for 变量2 in可迭代对象2 if 真值表达式2]