10个小技巧,让你的 Python 代码更加优雅~

排序的需求在很多场景中都很常见,Python中的可迭代对象(列表、元组、字典)都可以进行排序,内置函数 sorted() 让我们甚至都不需要自己实现排序算法。

data = [1, 3, -5, 7, 9, -11]

sortedData = sorted(data)

print(sortedData)

输出:

[-11, -5, 1, 3, 7, 9]

sorted() 方法自动将列表按照升序排序,如果你想按照降序排序,可以使用 sorted() 的参数 reverse = True 。

sorted() 方法同样也适用于元组类型的数据,但是注意排序的结果将返回一个列表。

data = (1, 3, -5, 7, 9, -11)

print(data)

sortedData = sorted(data)

print(sortedData)

输出:

(1, 3, -5, 7, 9, -11)

[-11, -5, 1, 3, 7, 9]

对于复杂的可迭代对象,比如我们可以创建一个列表,列表中的每一个元素都是一个人的字典信息,然后我们按照每个人的年龄进行排序。

我们可以用 sorted() 的 key 参数,传入一个匿名函数,让排序按照我们预想的方式进行。

data = [{

“name”: “Alex”, “age”: 18},

{

“name”: “Band”, “age”: 21},

{

“name”: “Coco”, “age”: 17}]

sorted_data = sorted(data, key=lambda x: x[“age”])

print(sorted_data)

输出:

[{‘name’: ‘Coco’, ‘age’: 17}, {‘name’: ‘Alex’, ‘age’: 18}, {‘name’: ‘Band’, ‘age’: 21}]

4. 使用集合 Set 存储唯一值


如果你有一个包含多个值的列表,并且需要去重,一个不错的技巧是将我们的列表转换为一个集合。

Python的集合是一种无序的数据类型,并且没有重复元素,还提供了不同集合之间的运算,可以求交集、并集和差集。

data = [1, 3, 3, 5, 5, 5, 7, 7, 7, 7, 9, 9, 9, 9, 9]

setData = set(data)

print(setData)

输出:

{1, 3, 5, 7, 9}

5. 使用生成器以节省内存


有时候列表并不是最好的选择。假如我们有一个非常大的列表,有10000个元素,我们想计算所有元素的总和,虽然可以用列表来做,当如果数据量特别大的话我们可能会遇到内存问题,更好的解决方案是使用生成器。

dataList = [i for i in range(10000)]

print(sum(dataList))

dataGen = (i for i in range(10000))

print(sum(dataGen))

输出:

列表生成式与生成器具有相同的语法,不同点在于列表生成式使用的是中括号,而生成器使用的是小括号。

生成器通过类似于懒加载的方式计算我们需要的元素,因此它一次只生成一个元素,并且只在需要的时候才生成。

我们可以使用 sys 的 getsize() 方法看一下列表和生成器的大小。

import sys

dataList = [i for i in range(10000)]

print(sys.getsizeof(dataList), “bytes”)

dataGen = (i for i in range(10000))

print(sys.getsizeof(dataGen), “bytes”)

输出:

85176 bytes

112 bytes

6. 在字典中获取元素使用 .get() 并且设置默认值


假设我们有一个字典,其中包括不同的键,比如商品和价格,在我们的代码中的某个点,想要获得商品的价格。

当我们用 [] 简单的访问键时,如果键不在字典中,那么代码将会报错,引发一个 KeyError

dataDict = {

“name”: “Tesla”,

“price”: 250000

}

print(dataDict[“count”])

报错:

Traceback (most recent call last):

File “mian.py”, line 5, in

print(dataDict[“count”])

KeyError: ‘count’

更好的方式是使用 .get() 方法,此时如果键不存在,则不会引发 KeyError ,而是返回一个默认值,如果我们不指定默认值,它会直接返回None,如果我们指定默认值,那么它会返回我们指定的默认值。

dataDict = {

“name”: “Tesla”,

“price”: 250000

}

print(dataDict.get(“count”))

print(dataDict.get(“count”, 0))

输出:

None

0

7. 计数器 collections.Counter


如果你想计算列表中元素的数量,Python中有一个非常方便的工具。

from collections import Counter

data = [1, 3, 3, 5, 5, 5, 7, 7, 7, 7, 9, 9, 9, 9, 9]

counter = Counter(data)

print(counter)

最后

不知道你们用的什么环境,我一般都是用的Python3.6环境和pycharm解释器,没有软件,或者没有资料,没人解答问题,都可以免费领取(包括今天的代码),过几天我还会做个视频教程出来,有需要也可以领取~

给大家准备的学习资料包括但不限于:

Python 环境、pycharm编辑器/永久激活/翻译插件

python 零基础视频教程

Python 界面开发实战教程

Python 爬虫实战教程

Python 数据分析实战教程

python 游戏开发实战教程

Python 电子书100本

Python 学习路线规划

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python爬虫全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:python)
img

3年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**

深知大多数初中级Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python爬虫全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:python)
[外链图片转存中…(img-IqDTpDiq-1710865142957)]

  • 18
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值