1. 用ZIP处理列表

假设要合并相同长度的列表并打印结果。同样有一种更通用的方式,即用zip()函数获得想要的结果,代码如下:

countries= ['France', 'Germany', 'Canada']
capitals = ['Paris', 'Berlin', 'Ottawa']
for country, capital in zip(countries,capitals):print(country, capital)
#输出:
# France Paris
# Germany Berlin
# Canada Ottawa

2. 使用python collections

Python collections是容器数据类型,即列表、集合、元组、字典。Collections模块提供了可以增强代码的高性能数据类型,使工作更加简洁容易。它还提供了许多功能,以下使用Counter() 函数进行演示。

Counter() 函数采用一个可迭代对象(如列表或元组),并返回一个Counter字典。字典的键是迭代器中唯一存在的元素,每个键的值是该元素在迭代器中出现次数的计数。

为创建一个Counter对象,将一个迭代的(列表)传递给Counter()函数,代码如下。

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
from collections import Counter
count = Counter(['a','b','c','d','b','c','d','b'])
print(count) # Counter({'b': 3, 'c': 2, 'd': 2, 'a': 1})

3. 使用itertools

Python的itertools模块是用于处理迭代器的工具集合。Itertools包含多种工具,用于生成输入数据的可迭代结果。这里以itertools.combinations()为例。itertools.combinations()用于构建组合。这些是输入量的可能组合项。

举一个现实中的例子来阐明以上观点:

假设一个锦标赛中有4个队伍,在联赛阶段,每个队伍都要与其他每个队伍进行比赛。任务是列出所有比赛队伍的可能组合。

代码如下:

import itertools
friends = ['Team 1', 'Team 2', 'Team 3', 'Team 4']
list(itertools.combinations(friends, r=2))
# [('Team 1', 'Team 2'),      ('Team 1', 'Team 3'),  ('Team 1', 'Team 4'),  ('Team 2', 'Team 3'),  ('Team 2', 'Team 4'),  ('Team 3', 'Team 4')]

需要注意的是,值的顺序不重要。因为(‘Team 1’, ‘Team 2’)和(‘Team 2’, ‘Team 1’)代表同一对,所以输出列表只需包含其中一个。相似的,可以使用itertools.permutations()以及来自该模块的其他函数。

4 使用列表推导式

列表推导式用于从其他可迭代对象中创建新列表。列表推导式返回列表时,由包含表达式的方括号组成,该表达式对于每个元素以及用于循环遍历每个元素的for循环执行。由于对python解释器进行了优化,可以在循环期间发现可预测的模式,因此列表推导速度更快。

如下,使用列表推导式计算前五个整数的平方:

m = [x** 2 for x in range(5)]
print(m) # [0, 1, 4, 9, 16]

再如,使用列表推导式查找两个列表中的公共数字:

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
list_a =[1, 2, 3, 4]
list_b = [2, 3, 4, 5]
common_num = [a for a in list_a for b in list_b if a == b]
print(common_num) # [2, 3, 4]

5. 将两个列表转换为一个字典

假设有两个列表,一个列表内容为学生姓名,另一个内容为学生分数。使用zip函数,将这两个列表转换为一个字典,代码如下:

students= ["Peter", "Julia", "Alex"]
marks = [84, 65, 77]
dictionary = dict(zip(students, marks))
print(dictionary) # {'Peter': 84, 'Julia': 65, 'Alex': 77}

6. 字符串拼接
拼接字符串时可用for循环来逐个添加元素,但这非常低效(特别是当列表很长时)。在python中,字符串是不可变的,因此拼接字符串时,必须将左、右字符串复制到新的字符串中。

更好的方法是使用join() 函数,如下所示:

haracters= ['p', 'y', 't', 'h', 'o', 'n']
word = "".join(characters)
print(word) # python

7. 使用sorted()函数
在python中使用内置函数sorted()可以轻而易举地对任何序列进行排序,它能完成很多艰难的工作。sorted()可对任何序列(列表、元组)进行排序,并返回已排序的元素列表。如下对数字进行升序排列:

sorted([3,5,2,1,4])# [1, 2, 3, 4, 5]

如下对字符串进行降序排列:

sorted(['france','germany', 'canada', 'india', 'china'], reverse=True) # ['india', 'germany','france', 'china', 'canada']

9. 用enumerate()迭代

Enumerate()方法向可迭代对象添加一个计数器,并以枚举对象的形式返回。

以下是一个经典的编码方面的面试问题(通常被称为Fizz Buzz问题)。

编写一个程序来打印列表中的数字。若数字是3的倍数,输出“fizz”;是5的倍数,输出“buzz”;既是3又是5的倍数,输出“fizzbuzz”

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
numbers= [30, 42, 28, 50, 15]
for i, num in enumerate(numbers):if num % 3 == 0 and num % 5 == 0:numbers[i] = 'fizzbuzz'elif num % 3 == 0:numbers[i] = 'fizz'elif num % 5 == 0:numbers[i] = 'buzz'
print(numbers) # ['fizzbuzz', 'fizz', 28, 'buzz', 'fizzbuzz']

10. 使用python generators(生成器)

generator函数允许创建类似迭代器的函数。他们允许程序员以一种简单快速的方式创建迭代器。下面通过一个例子来解释这个概念。

假设要对从1开始的前100000000个完全平方数求和。

看起来很容易对吧。使用列表推导式可以很轻松的做到这一点,但是它的输入量过大。下面为一示例:

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
import time
t1 =time.clock()
sum([i * i for i in range(1, 100000000)])
t2 = time.clock()
time_diff = t2 - t1
print(f"It took {time_diff} Secs to execute this method") # Ittook 13.197494000000006 Secs to execute this method

在增加求和的完全平方数时,由于需要大量计算时间,这种方法并不够灵活。这时python生成器就派上用场了。将方括号替换为圆括号后,列表推导式更改为生成器表达式。现在计算花费的时间:

import time
t1 = time.clock()
sum((i * i for i in range(1, 100000000)))
t2 = time.clock()
time_diff = t2 - t1
print(f"It took {time_diff} Secs to execute this method") # Ittook 9.53867000000001 Secs to execute this method

如上,所花费时间已大大减少。输入量越大,减少效果越显著。

10个python使用技巧相关推荐

  1. 掌握这10个Python小技巧,让你敲代码速度快5倍不止

    问各位一个问题,你有木有经历过这一的场景: 老板让你和同事同事敲代码,同样的时间,别人却比你做的快了很多倍,而且做的还很不错? 其实很多时候也不是你不厉害,更多的是很多基础的效率操作,你没有发现. P ...

  2. exists的用法 python_5 年 Python ,总结的 10 条 Python 使用技巧

    今天给大家分享 10 个我平时整理非常实用的 Python 开发小技巧,内容目录如下: 值得一提的是,这 10 个技巧全部收录在我自己写的 <Python黑魔法指南>里. 1. 如何在运行 ...

  3. 10条Python代码优化技巧

    Python是一种功能强大的解释型编程语言.我们可以通过下面的10条优化技巧来减少代码量并提高代码的运行效率. 善用列表(list)推导式 问题:输出1万内每个数的平方. 发现用列表推导式所用时间更少 ...

  4. 10个Python简单技巧,让数据分析速度加快不止一倍(附零基础学习资料)

    前言 有时,在编程领域的一个小技巧.一个小的快捷方式或附加组件能极大地提高生产力.下文中的建议和技巧有些可能很常见,有些则较新颖,相信你在将来处理数据分析项目时会派上用场. (文末送读者福利) 1. ...

  5. python装逼_能够让你装逼的10个Python小技巧

    列表推导式 你有一个list: bag = [1, 2, 3, 4, 5] 现在你想让所有元素翻倍,让它看起来是这个样子: [2, 4, 6, 8, 10] 大多初学者,根据之前语言的经验会大概这样来 ...

  6. 10个python小技巧,优雅地书写人生

    原文链接,代码均可运行 毫无疑问,python是一种.流行且容易理解的语言. 当然,有人说过:"没有最好,只有更好",但Python最好

  7. 兵贵神速!掌握这10个Python技巧,让你代码工作如鱼得水

    1000个读者心中有1000个哈姆雷特,要问1000个程序员"什么才是最好的语言",Java.Python.PHP.C++ 也都有自己的位置.但要问编程语言流行指数之王非,那真的非 ...

  8. 兵贵神速!掌握这10个python技巧,让你代码工作如鱼得水!

    (给机器学习算法与Python学习加星标,提升AI技能) 本文来自"读芯术" 相关链接: https://towardsdatascience.com/10-python-tips ...

  9. 兵贵神速 掌握这10个python技巧,让你代码工作如鱼得水

    全文共4433字,预计学习时长13分钟 图源:Unsplash 1000个读者心中有1000个哈姆雷特,要问1000个程序员"什么才是最好的语言",Java.Python.PHP. ...

最新文章

  1. Eclipse上GIT插件EGIT使用手册之八_解决推送冲突
  2. python安装包-Python安装包+安装教程
  3. An example of using Pandas for regression
  4. Yii2.0 rules常用验证规则
  5. 提高国内访问 GitHub 的速度的方案
  6. 计组之数据运算:13、加法器优化
  7. c语言中欧几里得模乘法逆元,扩展欧几里得算法同余方程模m乘法逆元详解
  8. bootstrapr表格父子框_JS组件系列——表格组件神器:bootstrap table(二:父子表和行列调序)...
  9. 有的朋友问我创业没有资金怎么办?
  10. easyui ajax post,实例详解EasyUI框架使用Ajax提交注册信息
  11. 官方Canvas API文档
  12. php+rabbitMQ操作之延迟队列(延迟插件)
  13. 爬取大麦网演出信息保存为CSV文件并制作词云
  14. 产品经理如何实现自我提升
  15. while True:just do it
  16. 适用于程序员的钢琴、五线谱入门教程
  17. Wireshark:抓取微信网址
  18. 『Java』Zip中Excel文件的解析
  19. 百度地图在html上自定义画线,以百度地图为底图如何在上面画线?
  20. r语言中残差与回归值的残差图_用R语言做回归分析_iris数据集/longley数据集

热门文章

  1. PHP锁,分钟级别锁
  2. sql server之数据库语句优化
  3. ASP.NET MVC Beta 新特性之 IValueProvider
  4. Windows权限设置详解
  5. eureka跨服务_微服务(microservices) 资料总结
  6. 【学习笔记】制造业MES系统功能重点
  7. 【PM模块】维护业务处理流程—内部维护(维护工单)
  8. 【MM模块】Vendor Consignment 供应商寄售
  9. 10、Power Map—自定义地图背景
  10. 项目经理需要注意的四件事