Python爬虫从入门到放弃 03 | Python爬虫中的高级用法

此博客仅为我业余记录文章所用,发布到此,仅供网友阅读参考,如有侵权,请通知我,我会删掉。
本文章纯野生,无任何借鉴他人文章及抄袭等。坚持原创!!

前言

你好。这里是Python爬虫从入门到放弃系列文章。我是SunriseCai。

本文章主要介绍一下Python爬虫过程中可能会常用到的Python高级语法。

Python高级函数

lambda表达式Python中一类特殊的定义函数的形式,使用它可以定义一个匿名函数

  • 语法:lambda argument_list: expressionargument_list为传入的参数,expression为表达式,这一整个叫做lambda函数)

  • 基本示例:

lambda_eg = lambda x,y : x*y	# 输出传入的两个值的乘积
print(lambda_eg (2, 3))	# 6 

lambda有多种用法,这里只对经常用到的用法做介绍。

方法 描述
sorted() sorted() 函数对所有可迭代的对象进行排序操作。
filter() 用于过滤序列,过滤掉不符合条件的元素,返回迭代器
map() 参数序列中的每一个元素都调用函数,返回迭代器
zip() 用于将可迭代的对象作为参数,将对应元素打包成多个元组
  • sorted():
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]
  • filter():
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再输出
  • map():
list_eg = [70, 45, 37, 127, 148, 26, 121]
square = map(lambda x: x ** 2, list_eg)	# 输出平方
print(list(square))
  • zip():
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}

Python推导式

推导式提供了从一个数据序列创建其它的数据结构的简单途径。换句话说就是可以减少代码量。共三种推导式,分别是列表推导式字典推导式以及集合推导式。下来看看看他们的使用方法。

  • Python列表推导式(list)
  • 以建立一个10以内可以整除2的列表为例:

常规写法:

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]

  • Python字典推导式(dict)
  • 以两个列表做键值对,建立成一个字典为例。

常规写法:

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}

  • Python集合推导式(set)
  • 以将一个列表内的值求平方,输入到集合中再输出

常规写法:

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)排序,根据键排序 值排序
  • 注意一下:如果字典(dict)的键值是字符而不是整数,这时使用int(str)转换为整数即可。

字典根据 排序:

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}

  • 后续再继续补充更多语法。

以上,便是本章的所有内容了。
在实际编程过程中,会用到的语法数不胜数,不胜枚举,这里只将很少一部分常用的语法记录下来。在编程过程中,各位灵活使用各种语法即可!!


最后来总结一下本章的内容:

  1. 介绍了lambda函数的使用
  2. 介绍了Python三个推导式的使用
  3. 介绍了Python根据字典(dict)的排序

sunrisecai

  • 感谢你的耐心观看,点关注,不迷路。
  • 为方便菜鸡互啄,欢迎加入QQ群组织:648696280

下一篇文章,名为 《Python爬虫从入门到放弃 04 | Python爬虫打响第一炮之请求网页》

发布了39 篇原创文章 · 获赞 231 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/weixin_45081575/article/details/103953313