超实用的 30 段 Python 案例


Posted in Python onOctober 10, 2019

Python是目前最流行的语言之一,它在数据科学、机器学习、web开发、脚本编写、自动化方面被许多人广泛使用。

它的简单和易用性造就了它如此流行的原因。

如果你正在阅读本文,那么你或多或少已经使用过Python或者对Python感兴趣。

在本文中,我们将会介绍 30 个简短的代码片段,你可以在 30 秒或更短的时间里理解和学习这些代码片段。

1.检查重复元素

下面的方法可以检查给定列表中是否有重复的元素。它使用了 set() 属性,该属性将会从列表中删除重复的元素。

def all_unique(lst): 
 return len(lst) == len(set(lst)) 
 
x = [1,1,2,2,3,2,3,4,5,6] 
y = [1,2,3,4,5] 
all_unique(x) # False 
all_unique(y) # True

2.变位词

检测两个字符串是否互为变位词(即互相颠倒字符顺序)

from collections import Counter 
 
def anagram(first, second): 
 return Counter(first) == Counter(second) 
anagram("abcd3", "3acdb") # True

3.检查内存使用情况

以下代码段可用来检查对象的内存使用情况。

import sys 
variable = 30 
print(sys.getsizeof(variable)) # 24

4.字节大小计算

以下方法将以字节为单位返回字符串长度。

def byte_size(string): 
 return(len(string.encode('utf-8'))) 
 
byte_size('?') # 4 
byte_size('Hello World') # 11

5.重复打印字符串 N 次

以下代码不需要使用循环即可打印某个字符串 n 次

n = 2; 
s ="Programming"; print(s * n); 
# ProgrammingProgramming

6.首字母大写

以下代码段使用 title() 方法将字符串内的每个词进行首字母大写。

s = "programming is awesome" 
print(s.title()) # Programming Is Awesome

7.分块

以下方法使用 range() 将列表分块为指定大小的较小列表。

from math import ceil 
def chunk(lst, size): 
 return list( 
 map(lambda x: lst[x * size:x * size + size], 
 list(range(0, ceil(len(lst) / size))))) 
chunk([1,2,3,4,5],2) # [[1,2],[3,4],5]

8.压缩

以下方法使用 fliter() 删除列表中的错误值(如:False, None, 0 和“”)

def compact(lst): 
 return list(filter(bool, lst)) 
compact([0, 1, False, 2, '', 3, 'a', 's', 34]) # [ 1, 2, 3, 'a', 's', 34 ]

9.间隔数

以下代码段可以用来转换一个二维数组。

array = [['a', 'b'], ['c', 'd'], ['e', 'f']] 
transposed = zip(*array) 
print(transposed) # [('a', 'c', 'e'), ('b', 'd', 'f')]

10.链式比较

以下代码可以在一行中用各种操作符进行多次比较。

a = 3 
print( 2 < a < 8) # True 
print(1 == a < 2) # False

11.逗号分隔

以下代码段可将字符串列表转换为单个字符串,列表中的每个元素用逗号分隔。

hobbies = ["basketball", "football", "swimming"]
print("My hobbies are: " + ", ".join(hobbies)) # My hobbies are: basketball, football, swimming

12.计算元音字母数

以下方法可计算字符串中元音字母(‘a', ‘e', ‘i', ‘o', ‘u')的数目。

import re 
def count_vowels(str): 
 return len(len(re.findall(r'[aeiou]', str, re.IGNORECASE))) 
count_vowels('foobar') # 3 
count_vowels('gym') # 0

13.首字母恢复小写

以下方法可用于将给定字符串的第一个字母转换为小写。

def decapitalize(string): 
 return str[:1].lower() + str[1:] 
decapitalize('FooBar') # 'fooBar' 
decapitalize('FooBar') # 'fooBar'

14.平面化

以下方法使用递归来展开潜在的深度列表。

def spread(arg):
 ret = []
 for i in arg:
 if isinstance(i, list):
 ret.extend(i)
 else:
 ret.append(i)
 return ret
def deep_flatten(lst):
 result = []
 result.extend(
 spread(list(map(lambda x: deep_flatten(x) if type(x) == list else x, lst))))
 return result
deep_flatten([1, [2], [[3], 4], 5]) # [1,2,3,4,5]

15.差异

该方法只保留第一个迭代器中的值,从而发现两个迭代器之间的差异。

def difference(a, b):
 set_a = set(a)
 set_b = set(b)
 comparison = set_a.difference(set_b)
 return list(comparison)
difference([1,2,3], [1,2,4]) # [3]

16.寻找差异

下面的方法在将给定的函数应用于两个列表的每个元素后,返回两个列表之间的差值。

def difference_by(a, b, fn):
 b = set(map(fn, b))
 return [item for item in a if fn(item) not in b]
from math import floor
difference_by([2.1, 1.2], [2.3, 3.4],floor) # [1.2]
difference_by([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], lambda v : v['x']) # [ { x: 2 } ]

17.链式函数调用

以下方法可在一行中调用多个函数。

def add(a, b):
 return a + b
def subtract(a, b):
 return a - b
a, b = 4, 5
print((subtract if a > b else add)(a, b)) # 9

18.检查重复值

以下方法使用 set() 方法仅包含唯一元素的事实来检查列表是否具有重复值。

def has_duplicates(lst):
 return len(lst) != len(set(lst))
 
x = [1,2,3,4,5,5]
y = [1,2,3,4,5]
has_duplicates(x) # True
has_duplicates(y) # False

19.合并两个词典

以下方法可用于合并两个词典。

def merge_two_dicts(a, b):
 c = a.copy() # make a copy of a 
 c.update(b) # modify keys and values of a with the ones from b
 return c
a = { 'x': 1, 'y': 2}
b = { 'y': 3, 'z': 4}
print(merge_two_dicts(a, b)) # {'y': 3, 'x': 1, 'z': 4}

在Python 3.5及更高版本中,你还可以执行以下操作:

def merge_dictionaries(a, b)
 return {**a, **b}
a = { 'x': 1, 'y': 2}
b = { 'y': 3, 'z': 4}
print(merge_dictionaries(a, b)) # {'y': 3, 'x': 1, 'z': 4}

20.将两个列表转换成一个词典

以下方法可将两个列表转换成一个词典。

def to_dictionary(keys, values):
 return dict(zip(keys, values))
 
keys = ["a", "b", "c"] 
values = [2, 3, 4]
print(to_dictionary(keys, values)) # {'a': 2, 'c': 4, 'b': 3}

21.使用枚举

以下方法将字典作为输入,然后仅返回该字典中的键。

list = ["a", "b", "c", "d"]
for index, element in enumerate(list): 
 print("Value", element, "Index ", index, )
# ('Value', 'a', 'Index ', 0)
# ('Value', 'b', 'Index ', 1)
#('Value', 'c', 'Index ', 2)
# ('Value', 'd', 'Index ', 3)

22.计算所需时间

以下代码段可用于计算执行特定代码所需的时间。

import time
start_time = time.time()
a = 1
b = 2
c = a + b
print(c) #3
end_time = time.time()
total_time = end_time - start_time
print("Time: ", total_time)
# ('Time: ', 1.1205673217773438e-05)

23.Try else 指令

你可以将 else 子句作为 try/except 块的一部分,如果没有抛出异常,则执行该子句。

try:
 2*3
except TypeError:
 print("An exception was raised")
else:
 print("Thank God, no exceptions were raised.")
#Thank God, no exceptions were raised.

24.查找最常见元素

以下方法返回列表中出现的最常见元素。

def most_frequent(list):
 return max(set(list), key = list.count)
list = [1,2,1,2,3,2,1,4,2]
most_frequent(list)

25.回文

以下方法可检查给定的字符串是否为回文结构。该方法首先将字符串转换为小写,然后从中删除非字母数字字符。最后,它会将新的字符串与反转版本进行比较。

def palindrome(string):
 from re import sub
 s = sub('[W_]', '', string.lower())
 return s == s[::-1]
palindrome('taco cat') # True

26.没有 if-else 语句的简单计算器

以下代码段将展示如何编写一个不使用 if-else 条件的简单计算器。

import operator
action = {
 "+": operator.add,
 "-": operator.sub,
 "/": operator.truediv,
 "*": operator.mul,
 "**": pow
}
print(action['-'](50, 25)) # 25

27.元素顺序打乱

以下算法通过实现 Fisher-Yates算法 在新列表中进行排序来将列表中的元素顺序随机打乱。

from copy import deepcopy
from random import randint
def shuffle(lst):
 temp_lst = deepcopy(lst)
 m = len(temp_lst)
 while (m):
 m -= 1
 i = randint(0, m)
 temp_lst[m], temp_lst[i] = temp_lst[i], temp_lst[m]
 return temp_lst
 
foo = [1,2,3]
shuffle(foo) # [2,3,1] , foo = [1,2,3]

28.列表扁平化

以下方法可使列表扁平化,类似于JavaScript中的[].concat(…arr)。

def spread(arg):
 ret = []
 for i in arg:
 if isinstance(i, list):
 ret.extend(i)
 else:
 ret.append(i)
 return ret
spread([1,2,3,[4,5,6],[7],8,9]) # [1,2,3,4,5,6,7,8,9]

29.变量交换

以下是交换两个变量的快速方法,而且无需使用额外的变量。

def swap(a, b):
 return b, a
a, b = -1, 14
swap(a, b) # (14, -1)

30.获取缺失键的默认值

以下代码段显示了如何在字典中没有包含要查找的键的情况下获得默认值。

d = {'a': 1, 'b': 2}
print(d.get('c', 3)) # 3

以上是你在日常工作中可能会发现的有用方法的简短列表。它主要基于这个GitHub项目(https://github.com/30-seconds/30_seconds_of_knowledge),你可以在其中找到许多其他有用的代码片段,包括Python及其他编程语言和技术。

总结

以上所述是小编给大家介绍的超实用的 30 段 Python 案例,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
使用python实现rsa算法代码
Feb 17 Python
python 删除大文件中的某一行(最有效率的方法)
Aug 19 Python
《Python学习手册》学习总结
Jan 17 Python
Python中的默认参数实例分析
Jan 29 Python
django Serializer序列化使用方法详解
Oct 16 Python
python list格式数据excel导出方法
Oct 31 Python
python 统计一个列表当中的每一个元素出现了多少次的方法
Nov 14 Python
详解Django-channels 实现WebSocket实例
Aug 22 Python
对Python获取屏幕截图的4种方法详解
Aug 27 Python
Python中的list与tuple集合区别解析
Oct 12 Python
Python sorted对list和dict排序
Jun 09 Python
Python实现排序方法常见的四种
Jul 15 Python
使用浏览器访问python写的服务器程序
Oct 10 #Python
详解Python time库的使用
Oct 10 #Python
python自动化测试无法启动谷歌浏览器问题
Oct 10 #Python
python批量将excel内容进行翻译写入功能
Oct 10 #Python
Python爬虫爬取Bilibili弹幕过程解析
Oct 10 #Python
安装python及pycharm的教程图解
Oct 10 #Python
Pytorch中的variable, tensor与numpy相互转化的方法
Oct 10 #Python
You might like
php简单统计字符串单词数量的方法
2015/06/19 PHP
PHP终止脚本运行三种实现方法详解
2020/09/01 PHP
Js切换功能的简单方法
2010/11/23 Javascript
JavaScript实现网页图片等比例缩放实现代码及调用方式
2013/02/25 Javascript
jquery单行文字向上滚动效果示例
2014/03/06 Javascript
jquery库文件略庞大用纯js替换jquery的方法
2014/08/12 Javascript
原生js实现的贪吃蛇网页版游戏完整实例
2015/05/18 Javascript
全面了解javascript中的错误处理机制
2016/07/18 Javascript
jQuery文本框得到与失去焦点动态改变样式效果
2016/09/08 Javascript
JS操作时间 - UNIX时间戳的简单介绍(必看篇)
2017/08/16 Javascript
karma+webpack搭建vue单元测试环境的方法示例
2018/05/24 Javascript
jQuery解析json格式数据示例
2018/09/01 jQuery
实现一个 Vue 吸顶锚点组件方法
2019/07/10 Javascript
Vue组件生命周期运行原理解析
2020/11/25 Vue.js
[00:36]DOTA2风云人物相约完美“圣”典 12月17日不见不散
2016/11/30 DOTA
[02:08]什么藏在DOTA2 TI9“小紫本”里?斧王历险记告诉你!
2019/05/17 DOTA
Python的垃圾回收机制深入分析
2014/07/16 Python
Python将xml和xsl转换为html的方法
2015/03/10 Python
Python基于select实现的socket服务器
2016/04/13 Python
树莓派动作捕捉抓拍存储图像脚本
2019/06/22 Python
python 解决tqdm模块不能单行显示的问题
2020/02/19 Python
如何在sublime编辑器中安装python
2020/05/20 Python
浅谈Html5移动端ios/Android兼容性总结
2018/06/01 HTML / CSS
美国批发零售网站:GearXS
2016/07/26 全球购物
美国智能家居专家:tink
2019/06/04 全球购物
哥德堡通行证:Gothenburg Pass
2019/12/09 全球购物
PHP中如何创建和修改数组
2012/05/02 面试题
聚网科技C++面试笔试题
2015/09/01 面试题
西安启天科技有限公司网络工程师面试题笔试题
2016/06/12 面试题
初中英语教学反思范文
2016/02/15 职场文书
职业规划从高考志愿专业选择开始
2019/08/08 职场文书
Python OpenCV快速入门教程
2021/04/17 Python
Django migrate报错的解决方案
2021/05/20 Python
linux中nohup和后台运行进程查看及终止
2021/06/24 Python
JavaScript流程控制(循环)
2021/12/06 Javascript
Python 视频画质增强
2022/04/28 Python