超实用的 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实现全角半角转换的方法
Aug 18 Python
python基础教程之循环介绍
Aug 29 Python
python opencv之分水岭算法示例
Feb 24 Python
Python基于whois模块简单识别网站域名及所有者的方法
Apr 23 Python
Python简单实现网页内容抓取功能示例
Jun 07 Python
python中使用print输出中文的方法
Jul 16 Python
Python实现提取XML内容并保存到Excel中的方法
Sep 01 Python
django配置连接数据库及原生sql语句的使用方法
Mar 03 Python
python集合删除多种方法详解
Feb 10 Python
快速了解Python开发环境Spyder
Jun 29 Python
python产生模拟数据faker库的使用详解
Nov 04 Python
matplotlib grid()设置网格线外观的实现
Feb 22 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之第八天
2006/10/09 PHP
PHP计数器的实现代码
2013/06/08 PHP
PHP记录和读取JSON格式日志文件
2016/07/07 PHP
图文详解PHP环境搭建教程
2016/07/16 PHP
php实现 master-worker 守护多进程模式的实例代码
2019/07/20 PHP
Laravel 已登陆用户再次查看登陆页面的自动跳转设置方法
2019/09/30 PHP
laravel 使用事件系统统计浏览量的实现
2019/10/16 PHP
tp5修改(实现即点即改)
2019/10/18 PHP
封装html的select标签的js操作实例
2013/07/02 Javascript
jQuery中对未来的元素绑定事件用bind、live or on
2014/04/17 Javascript
javascript强制点击广告的方法
2015/02/06 Javascript
Jquery实现动态切换图片的方法
2015/05/18 Javascript
javascript实现下拉提示选择框
2015/12/29 Javascript
canvas仿iwatch时钟效果
2017/03/06 Javascript
ES6新特性之函数的扩展实例详解
2017/04/01 Javascript
客户端(vue框架)与服务器(koa框架)通信及服务器跨域配置详解
2017/08/26 Javascript
微信小程序按钮去除边框线分享页面功能
2018/08/27 Javascript
详解小程序开发经验:多页面数据同步
2019/05/18 Javascript
Vue 列表页带参数进详情页的操作(router-link)
2020/11/13 Javascript
python备份文件的脚本
2008/08/11 Python
Python判断列表是否已排序的各种方法及其性能分析
2016/06/20 Python
python 链接和操作 memcache方法
2017/03/04 Python
Python单体模式的几种常见实现方法详解
2017/07/28 Python
解决python3 安装完Pycurl在import pycurl时报错的问题
2018/10/15 Python
Python闭包和装饰器用法实例详解
2019/05/22 Python
html5桌面通知(Web Notifications)实例解析
2014/07/07 HTML / CSS
阿迪达斯新加坡官方网站:adidas新加坡
2019/12/06 全球购物
岗位职责的定义
2013/11/10 职场文书
高中毕业自我评价
2014/02/08 职场文书
基层党组织公开承诺书
2014/03/28 职场文书
2014年骨干教师工作总结
2014/12/19 职场文书
幼儿教师小班个人总结
2015/02/05 职场文书
python实现的人脸识别打卡系统
2021/05/08 Python
html+css实现赛博朋克风格按钮
2021/05/26 HTML / CSS
SpringBoot+Vue+JWT的前后端分离登录认证详细步骤
2021/09/25 Java/Android
【海涛七七解说】DCG第二周:DK VS 天禄
2022/04/01 DOTA