python 列表 (List)
~~~~~~~
列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。
~~~~~~~
也就是说,创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。如下所示:
list1 = ['physics', 'chemistry', 1997, 2000]
list2 = [1, 2, 3, 4, 5 ]
list3 = ["a", "b", "c", "d"]
python 元组 (Tuple)
~~~~~~~
与列表不同之处在于元组的元素不能修改。
~~~~~~~
元组使用小括号,列表使用方括号。
~~~~~~~
元组创建只需要在括号中添加元素,并使用逗号隔开即可。
tup1 = ('physics', 'chemistry', 1997, 2000)
tup2 = (1, 2, 3, 4, 5 )
tup3 = "a", "b", "c", "d"
python 字典 (Dictionary)
~~~~~~~
字典是另一种可变容器模型,且可存储任意类型对象。
~~~~~~~
字典的每个键值 (key=>value)对用" : “分割,每个键值对之间用” , "分割,整个字典包括在花括号 { } 中 ,格式如下所示:
>>> dict = {'a': 1, 'b': 2, 'b': '3'}
>>> dict['b']
'3'
>>> dict
{'a': 1, 'b': '3'}
- 需要说明的是,键一般是唯一的,而键值会由后面的替换前面的
*args 和 ** kwargs
~~~~~~~ *args称之为Non-keyword Variable Arguments,无关键字参数;
~~~~~~~ **kwargs称之为keyword Variable Arguments,有关键字参数;
-
当函数中以列表或者元组的形式传参时,就要使用*args;
-
当传入字典形式的参数时,就要使用**kwargs。
-
keys关键字
需要注意的是keys关键字在python2.x和python3有一点差异
- 在python3中,如果直接使用dict.keys(),那么返回值为dict_keys对象,并非直接的列表,若要返回列表值还需调用list函数。
>>>phone_book={'sam':'1234','tom':'5678'} //创建字典
>>>phone_book.keys() //调用keys方法
dict_keys(['sam', 'tom'])
>>>list(phone_book.keys()) //调用list函数
['sam', 'tom']
- 在python2.x中,如果直接使用dict.keys(),那么直接返回列表,若要返回列表,无需需调用list函数。
>>>dict={'name':'ming','age':20}
>>>dict.keys()
['name', 'age']
Assert (断言)
语法格式为
assert expression
等价于
if not expression:
raise AssertionError
assert 后面也可以紧跟参数:
assert expression [, arguments]
等价于:
if not expression:
raise AssertionError(arguments)
eg:
Enumerate函数
- case1
#eg1:
line = [1,2,3,4,5,6,7,8,9]
for i,j in enumerate(line):
print(i,j)
#以下是输出结果
0 1
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 9
#eg2:
line = ["a","b","c","d","e"]
for i,j in enumerate(line):
print(i,j)
#output:
0 a
1 b
2 c
3 d
4 e
- case2
>>>seasons = ['Spring', 'Summer', 'Fall', 'Winter']
>>> list(enumerate(seasons))
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
>>> list(enumerate(seasons, start=1)) # 下标从 1 开始
[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
- case3
Try语句
Final — How to understand?
def __init__(self, **kwargs):
allowed_kwargs = {'name'}
for kwarg in kwargs.keys():
assert kwarg in allowed_kwargs, 'Invalid keyword argument: ' + kwarg
name = kwargs.get('name')
if not name:
name = get_layer_name(self)
self.name = name
self.vars = {}
self.sparse_inputs = False