此博客仅为我业余记录文章所用,发布到此,仅供网友阅读参考,如有侵权,请通知我,我会删掉。
本文章纯野生,无任何借鉴他人文章及抄袭等。坚持原创!!
你好。这里是Python爬虫从入门到放弃系列文章。我是SunriseCai。
本文章主要介绍一下Python爬虫过程中可能会常用到的Python高级语法。
lambda表达式,Python中一类特殊的定义函数的形式,使用它可以定义一个匿名函数。
语法:lambda argument_list: expression(argument_list为传入的参数,expression为表达式,这一整个叫做lambda函数)
基本示例:
lambda_eg = lambda x,y : x*y # 输出传入的两个值的乘积
print(lambda_eg (2, 3)) # 6
lambda有多种用法,这里只对经常用到的用法做介绍。
方法 | 描述 |
---|---|
sorted() | sorted() 函数对所有可迭代的对象进行排序操作。 |
filter() | 用于过滤序列,过滤掉不符合条件的元素,返回迭代器 |
map() | 参数序列中的每一个元素都调用函数,返回迭代器 |
zip() | 用于将可迭代的对象作为参数,将对应元素打包成多个元组 |
list_eg = [70, 45, 37, 127, 148, 26, 121]
sorted_eg = sorted(list_eg, key=lambda x: x) # 这里不加lambda函数也是返回一样的结果
print(sorted_eg) # [26, 37, 45, 70, 121, 127, 148]
# sorted_eg = sorted(list_eg, key=lambda x: x,reverse=True) # 添加reverse=True,为倒序输出
# print(sorted_eg)[148, 127, 121, 70, 45, 37, 26]
list_eg = [70, 45, 37, 127, 148, 26, 121]
is_even = filter(lambda x: x % 2 == 0, list_eg) # 判断为偶数就输出
print(list(is_even )) # [70, 148, 26] 因为输出的是迭代器,所以转换为list再输出
list_eg = [70, 45, 37, 127, 148, 26, 121]
square = map(lambda x: x ** 2, list_eg) # 输出平方
print(list(square))
values = [70, 45, 37, 127, 148, 26, 121]
dogs = ['哈士奇', '萨摩耶', '泰迪', '金毛', '牧羊犬', '吉娃娃', '柯基']
dict_dogs = zip(dogs, values) # 遍历两组元素,返回元组
print(dict(dict_dogs)) # 转换成字典再输出
# {
'哈士奇': 70, '萨摩耶': 45, '泰迪': 37, '金毛': 127, '牧羊犬': 148, '吉娃娃': 26, '柯基': 121}
推导式提供了从一个数据序列创建其它的数据结构的简单途径。换句话说就是可以减少代码量。共三种推导式,分别是列表推导式、字典推导式以及集合推导式。下来看看看他们的使用方法。
常规写法:
values = [70, 45, 37, 127, 148, 26, 121]
list_even = []
for i in values:
if i % 2 == 0:
list_even.append(i)
print(list_even) # [70, 148, 26]
列表推导式:
values = [70, 45, 37, 127, 148, 26, 121]
list_even = list(i for i in values if i % 2 == 0)
print(list_even) # [70, 148, 26]
常规写法:
dogs = ['哈士奇', '萨摩耶', '泰迪', '金毛', '牧羊犬', '吉娃娃', '柯基']
values = [70, 45, 37, 127, 148, 26, 121]
dict_dogs = {
}
for k, v in zip(values, dogs):
dict_dogs[k] = v
print(dict_dogs)
# {
'哈士奇': 70, '萨摩耶': 45, '泰迪': 37, '金毛': 127, '牧羊犬': 148, '吉娃娃': 26, '柯基': 121}
字典推导式:
dogs = ['哈士奇', '萨摩耶', '泰迪', '金毛', '牧羊犬', '吉娃娃', '柯基']
values = [70, 45, 37, 127, 148, 26, 121]
dict_dogs = {
i[0]: i[1] for i in zip(dogs, values)}
print(dict_dogs)
# {
'哈士奇': 70, '萨摩耶': 45, '泰迪': 37, '金毛': 127, '牧羊犬': 148, '吉娃娃': 26, '柯基': 121}
常规写法:
values = [70, 45, 37, 127, 148, 26, 121]
square = []
for i in values:
square.append(i ** 2) # 求平方且存入到新列表
set_square = set(square) # 列表转换为集合
print(set_square) # {
16129, 4900, 676, 2025, 21904, 14641, 1369}
集合推导式:
values = [70, 45, 37, 127, 148, 26, 121]
set_square = {
i ** 2 for i in values}
print(set_square) # {
16129, 4900, 676, 2025, 21904, 14641, 1369}
通过上面的推导式例子,是不是已经觉得推导式可以减少很多代码量了呢!!
这里示例几个例子。分别是
方法1 | 方法2 |
---|---|
字典根据 值 排序 | 字典根据 键 排序 |
… | … |
字典根据 键 排序:
dict_dogs = {
31: '哈士奇', 20: '萨摩耶', 3: '泰迪', 24: '金毛'}
dict_order_dogs = dict(sorted(dict_dogs.items(), key=lambda x: x[0])) # 正序
dict_order_dogs = dict(sorted(dict_dogs.items(), key=lambda x: x[0], reverse=True)) # 倒序
print(dict_order_dogs) # {
3: '泰迪', 20: '萨摩耶', 24: '金毛', 31: '哈士奇'}
字典根据 值 排序:
dict_dogs = {
'哈士奇': 70, '萨摩耶': 45, '泰迪': 37, '金毛': 127}
dict_order_dogs = dict(sorted(dict_dogs.items(), key=lambda x: x[1])) # 顺序
dict_order_dogs = dict(sorted(dict_dogs.items(), key=lambda x: x[1], reverse=True)) # 倒序
print(dict_order_dogs) # {
'金毛': 127, '哈士奇': 70, '萨摩耶': 45, '泰迪': 37}
以上,便是本章的所有内容了。
在实际编程过程中,会用到的语法数不胜数,不胜枚举,这里只将很少一部分常用的语法记录下来。在编程过程中,各位灵活使用各种语法即可!!
最后来总结一下本章的内容:
下一篇文章,名为 《Python爬虫从入门到放弃 04 | Python爬虫打响第一炮之请求网页》。