超实用的 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实现对指定输入的字符串逆序输出的6种方法
Apr 26 Python
pandas DataFrame 根据多列的值做判断,生成新的列值实例
May 18 Python
Python单元测试简单示例
Jul 03 Python
python文件操作之批量修改文件后缀名的方法
Aug 10 Python
在Python中Dataframe通过print输出多行时显示省略号的实例
Dec 22 Python
python模拟登陆,用session维持回话的实例
Dec 27 Python
python 检查是否为中文字符串的方法
Dec 28 Python
解决Python找不到ssl模块问题 No module named _ssl的方法
Apr 29 Python
Python 中的pygame安装与配置教程详解
Feb 10 Python
python中for in的用法详解
Apr 17 Python
五分钟带你搞懂python 迭代器与生成器
Aug 30 Python
Django ModelForm组件原理及用法详解
Oct 12 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后门URL的防范
2013/11/12 PHP
PHP list() 将数组中的值赋给变量的简单实例
2016/06/13 PHP
通过javascript设置css属性的代码
2009/12/28 Javascript
Extjs3.0 checkboxGroup 动态添加item实现思路
2013/08/14 Javascript
Jquery获得控件值的三种方法总结
2014/02/13 Javascript
href下载文件根据id取url并下载
2014/05/28 Javascript
js和jquery设置disabled属性为true使按钮失效
2014/08/07 Javascript
VS2008中使用JavaScript调用WebServices
2014/12/18 Javascript
JS实现向表格行添加新单元格的方法
2015/03/30 Javascript
jquery实现用户打分评分特效
2015/05/28 Javascript
利用jQuery对无序列表排序的简单方法
2016/10/16 Javascript
详解Nodejs 通过 fs.createWriteStream 保存文件
2017/10/10 NodeJs
JavaScript程序设计高级算法之动态规划实例分析
2017/11/24 Javascript
Vant的安装和配合引入Vue.js项目里的方法步骤
2018/12/05 Javascript
vue-cli设置css不生效的解决方法
2020/02/07 Javascript
vue+Element中table表格实现可编辑(select下拉框)
2020/05/21 Javascript
[01:11:35]Liquid vs LGD 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[55:03]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第二场 11.20
2020/11/20 DOTA
pygame学习笔记(3):运动速率、时间、事件、文字
2015/04/15 Python
python json.loads兼容单引号数据的方法
2018/12/19 Python
Python线程threading模块用法详解
2020/02/26 Python
HTML5所有标签汇总及标签意义解释
2015/03/12 HTML / CSS
台湾最大网路书店:博客来
2018/03/18 全球购物
比利时家具购买网站:Home24
2019/01/03 全球购物
班级入场式解说词
2014/02/01 职场文书
减负增效提质方案
2014/05/23 职场文书
城管执法人员个人对照检查材料思想汇报
2014/09/29 职场文书
先进典型事迹材料
2014/12/29 职场文书
教师党员承诺书2015
2015/01/21 职场文书
单位推荐信范文
2015/03/27 职场文书
2015学生会文艺部工作总结
2015/04/03 职场文书
产品调价通知函
2015/04/20 职场文书
2016年法制宣传月活动总结
2016/04/01 职场文书
关于Vue Router的10条高级技巧总结
2021/05/06 Vue.js
Windows server 2012搭建FTP服务器
2022/04/29 Servers
win10输入法不见了只能打出字母怎么解决?
2022/08/05 数码科技