函数(上)
copy
copy(浅拷贝)
copy仅拷贝对象本身,而不对中的子对象进行拷贝,故对子对象进行修改也会随着修改。
dict1 = {‘user’:‘runoob’,‘num’:[1,2,3]}
dict2 = dict1
dict3 = dict1.copy()
dict1[‘user’]=‘root’
dict1[‘num’].remove(1)
print(dict1)
print(dict2)
print(dict3)
实例中 dict2 其实是 dict1 的引用(别名),所以输出结果都是一致的,dict3 父对象进行了深拷贝,不会随dict1 修改而修改,子对象是浅拷贝所以随 dict1 的修改而修改。
输出结果
{‘user’: ‘root’, ‘num’: [2, 3]}
{‘user’: ‘root’, ‘num’: [2, 3]}
{‘user’: ‘runoob’, ‘num’: [2, 3]}
deepcopy(深拷贝)
deepcopy是真正意义上的复制,即从新开辟一片空间。我们经常说的复制实际上就是deepcopy.
import copy
list = {‘user’:‘runoob’,‘num’:[1,2,3]}
list_copy = copy.deepcopy(list)
list[3][0] = ‘taiwan’
print(list)
print(list_copy)
结果显示:
[user’:‘runoob’,‘num’:[‘taiwan’,2,3]]
[user’:‘runoob’,‘num’:[1,2,3]]
这样复制就不会改变子列表的值了,是因为deepcopy将子列表也复制了一份
字典遍历
(1)遍历key值
复制代码
a={‘a’: ‘1’, ‘b’: ‘2’, ‘c’: ‘3’}
for key in a:
print(key+’:’+a[key])
a:1
b:2
c:3
(2)遍历value值
for value in a.values():
print(value)
1
2
3
(3)遍历字典项
for kv in a.items():
print(kv)
(‘a’, ‘1’)
(‘b’, ‘2’)
(‘c’, ‘3’)
(4)遍历字典健值
for key,value in a.items():
print(key+’:’+value)
a:1
b:2
c:3
集合
集合(set)是一个无序的不重复元素序列。
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
创建格式:
set(value)
实例
basket = {‘apple’, ‘orange’, ‘apple’, ‘pear’, ‘orange’, ‘banana’}
print(basket) # 这里演示的是去重功能
{‘orange’, ‘banana’, ‘pear’, ‘apple’}
‘orange’ in basket # 快速判断元素是否在集合内
True
‘crabgrass’ in basket
False
两个集合间的运算.
a = set(‘abracadabra’)
b = set(‘alacazam’)
a
{‘a’, ‘r’, ‘b’, ‘c’, ‘d’}
a - b # 集合a中包含而集合b中不包含的元素
{‘r’, ‘d’, ‘b’}
a | b # 集合a或b中包含的所有元素
{‘a’, ‘c’, ‘r’, ‘d’, ‘b’, ‘m’, ‘z’, ‘l’}
a & b # 集合a和b中都包含了的元素
{‘a’, ‘c’}
a ^ b # 不同时包含于a和b的元素
{‘r’, ‘d’, ‘b’, ‘m’, ‘z’, ‘l’}
集合的基本操作
1、添加元素
语法格式如下:
s.add( x )
将元素 x 添加到集合 s 中,如果元素已存在,则不进行任何操作。
s.update( x )
x 可以有多个,用逗号分开。
2、移除元素
语法格式如下:
s.remove( x )
将元素 x 从集合 s 中移除,如果元素不存在,则会发生错误。
此外还有一个方法也是移除集合中的元素,且如果元素不存在,不会发生错误。格式如下所示:
s.discard( x )
我们也可以设置随机删除集合中的一个元素,语法格式如下:
s.pop()
3、计算集合元素个数
语法格式如下:
len(s)
计算集合 s 元素个数。
4、清空集合
语法格式如下:
s.clear()
清空集合 s。
5、判断元素是否在集合中存在
语法格式如下:
x in s
判断元素 x 是否在集合 s 中,存在返回 True,不存在返回 False。
函数
数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
函数能提高应用的模块性,和代码的重复利用率。
定义一个函数
你可以定义一个由自己想要功能的函数,以下是简单的规则:
&函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。
&任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
&函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
&函数内容以冒号 : 起始,并且缩进。
&return [表达式] 结束函数,选择性地返回一个值给调用方,不带表达式的 return 相当于返回 None。
语法
Python 定义函数使用 def 关键字,一般格式如下:
def 函数名(参数列表):
函数体
参数
以下是调用函数时可使用的正式参数类型:
必需参数
关键字参数
默认参数
不定长参数
必需参数
必需参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。