squares = [i*i for i in range(10)]
一行代码就可以实现
for
循环3行代码才能实现的功能。
列表表达式非常强大,它还可以结合条件语句进行使用。
不过,不要过度使用列表表达式。因为,它使代码变得简单的同时也增加了阅读理解的成本。所以,在一些复杂的语句不建议使用列表表达式。
使用set
去重
问题:对一个列表中的元素进行去重。
当看到这个问题,获取有的同学会想到很多复杂的方法,遍历、字典…
如果使用set
一行代码就可以实现列表元素的去重。
因为,set
是一种无序的集合,所以,它会自动去除列表中的重复元素。
my_list = [1,2,3,4,5,6,7,7,7]
set(my_list)
set([1, 2, 3, 4, 5, 6, 7])
利用生成器节省内存
问题:如果列表中有10000个元素,该如何节省内存?
如果元素比较少,使用列表是一个比较好的选择。如果元素多到一定程度,那么列表就变得非常耗费内存。
形象的解释生成器,就如同它的名称一样,它每次只生成一个元素,当调用它的时候,它会逐步生成下一个元素。如果不调用它的话,它就是一个非常节省内存的函数。
下面来对比一下,
import sys
my_list = [i for i in range(10000)]
print(sys.getsizeof(my_list), ‘bytes’) # 87616 bytes
my_gen = (i for i in range(10000))
print(sys.getsizeof(my_gen), ‘bytes’) # 128 bytes
可以看出,同样是10000个元素,在内存占用方面,使用列表是使用生成器的684.5倍。
使用.get()
和.setdefault()
访问字典
问题:访问一个字典中的值。
当通过key
访问字典时,如果字典中没有这个K-V值,那么,它会报错、终止程序,并返回KeyError。
所以更好的方法是在字典上使用.get()
方法。这也会返回键的值,但是如果键不可用,它不会引发键错误。相反,它返回指定的默认值,如果没有指定它,则返回None。
my_dict = {‘item’: ‘football’, ‘price’: 10.00}
price = my_dict[‘count’] # KeyError!
better:
price = my_dict.get(‘count’, 0) # optional default value
使用字典进行计数是一种常用的操作。
在这个过程中,需要首先判断字典中是否存在key
,然后赋给默认值,而使用.setdefault()
可以直接给字典设定默认值。
使用collections.Counter
计数
问题:统计列表字段中的元素出现次数,筛选出现频率最高的元素。
在项目开发过中,计数、统计频率,是经常会遇到的问题。
而Python自带的标准模块collections.Counter
提供了很多好用、强大的技术方法,只需要一行代码,就可以完成很多复杂逻辑才能完成的工作。
例如,要统计一个列表中出现频率最高的元素,可以这样实现:
from collections import Counter
my_list = [10, 10, 10, 5, 5, 2, 9, 9, 9, 9, 9, 9]
counter = Counter(my_list)
most_common = counter.most_common(2)
print(most_common) # [(9, 6), (10, 3)]
print(most_common[0]) # (9, 6)
print(most_common[0][0]) # 9
使用**
合并字段
问题:2个字典,把元素合并到同一个字段里
不需要经过2层遍历去读取字典中的元素,然后在把这些元素合并到同一个字典中,只需要简单的双星号**
就可以实现这个需求。
这种语法是自Python 3.5以来的新语法,在Python3.5之前无法使用。
下面来看一下示例:
d1 = {‘name’: ‘Alex’, ‘age’: 25}
d2 = {‘name’: ‘Alex’, ‘city’: ‘New York’}
merged_dict = {**d1, **d2}
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Python开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注Python)
最后
不知道你们用的什么环境,我一般都是用的Python3.6环境和pycharm解释器,没有软件,或者没有资料,没人解答问题,都可以免费领取(包括今天的代码),过几天我还会做个视频教程出来,有需要也可以领取~
给大家准备的学习资料包括但不限于:
Python 环境、pycharm编辑器/永久激活/翻译插件
python 零基础视频教程
Python 界面开发实战教程
Python 爬虫实战教程
Python 数据分析实战教程
python 游戏开发实战教程
Python 电子书100本
Python 学习路线规划
Python 电子书100本
Python 学习路线规划