构成一个字段序列:
print dict(zip('abcd', range(4)))
# 输出结果:{'a': 0, 'c': 2, 'b': 1, 'd': 3}
运算三元表达式:
print 'good' if 1 == 1 else 'bad'
# 满足if 语句,输出'good', 否则输出'bad'
直接return 条件判断:
def func(n):
return 'good' if n == 1 else 'bad'
result = func(1)
print result
# 输出结果:'good'
推导列表生成字典:
my_list = [(1, 'a'), (2, 'b'), (3, 'c')]
my_dict = {item[1]: item[0] for item in my_list}
print my_dict
# 输出结果:{'a': 1, 'c': 3, 'b': 2}
使用heapq库来进行排序
,取最大值、最小值:
列表排序的操作:
import heapq
my_list = [2, 5, 3, 1, 6, 7, 0]
# 取出列表中从大到小的3个值, 返回一个列表
print heapq.nlargest(3, my_list)
# 取出列表中从小到大的3个值,返回一个列表
print heapq.nsmallest(3, my_list)
列表中嵌套字典的操作:
my_list = [{'name': 'fe_cow', 'age': 18, 'city': 'BJ'},
{'name': 'al_cow', 'age': 25, 'city': 'SH'},
{'name': 'cu_cow', 'age': 22, 'city': 'SZ'}]
# 根据列表中字典的'age' 进行从小到大进行排序, 并且取前两值
print heapq.nsmallest(2, my_list, key=lambda x: x['age'])
# 输出结果: [{'city': 'BJ', 'age': 18, 'name': 'fe_cow'},
# {'city': 'SZ', 'age': 22, 'name': 'cu_cow'}]
# 根据列表中字典的'age' 进行从大到小进行排序, 并且取前两值
print heapq.nlargest(2, my_list, key=lambda x: x['age'])
# 输出结果:[{'city': 'SH', 'age': 25, 'name': 'al_cow'},
# {'city': 'SZ', 'age': 22, 'name': 'cu_cow'}]
用lamdba配合filter过滤
使用纯粹的列表:
my_list = ['create', 'update', 'delete', 'get']
# 查询my_list列表中以'up'开头的值
print filter(lambda x: x.startswith('up'), my_list)
# 输出结果:['update']
使用列表嵌套字典:
my_list = [{'name': 'fe_cow'}, {'age': 18}, {'QQ': '280773872'}]
# 查询my_list列表中, 字典的key是'name' 的键值对
print filter(lambda x: 'name' in x.keys(), my_list)
# 输出结果:[{'name': 'fe_cow'}]
注意:lamdba是为了减少单行函数的定义而存在的,并不会带来程序运行效率的提高,只会让代码更简洁。
最常见的几种方式:
一个条件:
print [item * 2 for item in range(10) if item % 2 == 0]
# 输出结果:[0, 4, 8, 12, 16]
多个条件:
print [item * 2 for item in range(10) if item % 2 == 0 and item % 6 == 0]
# 输出结果:[0, 12]
用if-else条件:
print [item * 2 if item >= 5 else item * 10 for item in range(10)]
# 输出结果:[0, 10, 20, 30, 40, 10, 12, 14, 16, 18]
嵌套推到列表:
my_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print [x for item in my_list for x in item]
# 输出结果:[1, 2, 3, 4, 5, 6, 7, 8, 9]
options = {'code': 'utf-8'}
headers = {
'User-Agent': 100,
'Accept-Encoding': 'gzip , deflate, sdch',
'Accept-Language': 'zh-CN, zh; q=0.8'
}
# 生成一个新的字典
new_headers = dict(headers, **options)
print new_headers
# 输出结果:{'code': 'utf-8',
# 'Accept-Language': 'zh-CN, zh; q=0.8',
# 'Accept-Encoding': 'gzip , deflate, sdch',
# 'User-Agent': 100}
# 或者用update, 更新原来的字典
headers.update(options)
print headers
# 输出结果也是:{'code': 'utf-8',
# 'Accept-Language': 'zh-CN, zh; q=0.8',
# 'Accept-Encoding': 'gzip , deflate, sdch',
# 'User-Agent': 100}