衡量运行时间

很多时候你需要计算某段代码执行所需的时间,可以使用 time 模块来实现这个功能。

  1. import time
  2. startTime = time.time()
  3. # write your code or functions calls
  4. endTime = time.time()
  5. totalTime = endTime - startTime
  6. print("Total time required to execute code is =", totalTime)
  7. # output
  8. Total time required to execute code is = 4.76837158203125e-07

获取两个列表之间的差异

不使用循环,找出两个列表的差异,可以使用集合的 symmetric_difference 方法。

  1. list1 = ['Scott', 'Eric', 'Kelly', 'Emma', 'Smith']
  2. list2 = ['Scott', 'Eric', 'Kelly']
  3. set1 = set(list1)
  4. set2 = set(list2)
  5. list3 = list(set1.symmetric_difference(set2))
  6. print(list3)
  7. # output
  8. ['Emma', 'Smith']

翻转字符串和列表

  1. a = "zhihu"
  2. print("Reverse is", a[::-1])
  3. List = ["Shriya", "Lavina", "Sampreeti" ]
  4. List.reverse()
  5. print(List)
  6. # output
  7. Reverse is uhihz
  8. ['Sampreeti', 'Lavina', 'Shriya']

连接列表中的多个字符串

需要调用字符串的 join 方法,还可以设置间隔符,下面为间隔符为空格的例子。

  1. a = ["Python", "Is", "Great"]
  2. print(" ".join(a))
  3. # output
  4. Python Is Great

同时使用多个比较运算符

在 C 中不能连续进行大小比较,在 Python 中就可以。

  1. n = 10
  2. result = 1 < n < 20
  3. print(result)
  4. result = 1 < n <= 9
  5. print(result)
  6. # output
  7. True
  8. False

打印导入模块的文件路径

  1. import os
  2. import socket
  3. print(os)
  4. print(socket)
  5. # output
  6. <module 'os' from 'D:\\Users\\xxx\\miniconda3\\envs\\xin\\lib\\os.py'>
  7. <module 'socket' from 'D:\\Users\\xxx\\miniconda3\\envs\\xin\\lib\\socket.py'>

二维列表转一维列表

只需使用 Itertools 一行代码,即可将嵌套列表转换为一个列表。

  1. import itertools
  2. a = [[1, 2], [3, 4], [5, 6]]
  3. print(list(itertools.chain.from_iterable(a)))
  4. # output
  5. [1, 2, 3, 4, 5, 6]

Lambda 匿名函数用法

要声明一些小功能,但不使用常规的声明方式,可以用使用 lambda。 python 中的 lambda 关键字为声明匿名函数提供了快捷方式。

  1. subtract = lambda x, y : x-y
  2. subtract(5, 4)
  3. # 可结合map reduce使用

列表中每个元素出现次数

Counter(list).most_common(n) 根据列表 / 字符串中每个元素出现次数,降序返回列表 / 字符串中的前 n 个元素,其中 n 是指定的数字。在元组中返回各个元素及其出现的次数。

  1. # Code to find top 3 elements and their counts
  2. # using most_common
  3. from collections import Counter
  4. arr = [1, 3, 4, 1, 2, 1, 1, 3, 4, 3, 5, 1, 2, 5, 3, 4, 5]
  5. counter = Counter(arr)
  6. top_three = counter.most_common(3)
  7. print(top_three)
  8. # output
  9. [(1, 5), (3, 4), (4, 3)]

输出结果为个数最多的 3 个数字,其中 1 出现 5 次,3 出现 4 次,4 出现 3 次。

找到列表中最常出现的值

  1. test = [1, 2, 3, 4, 2, 2, 3, 1, 4, 4, 4]
  2. print(max(set(test), key = test.count))
  3. # max(test, key = test.count) 也可以实现同样功能,但列表数据量大时会变慢
  4. # s.count(x) x在s中出现的总次数
  5. # output
  6. 4

检查对象的内存使用情况

当你要使用任何数据结构(例如列表,字典或任何对象)来存储值或记录时,可以检查数据结构使用了多少内存。

使用 sys 模块中定义的 sys.getsizeof 函数获取内置对象使用的内存,返回对象的大小(以字节为单位)。

  1. import sys
  2. x = 1
  3. print(sys.getsizeof(x))
  4. # output
  5. 28

注意:sys.getsizeof 不会为第三方对象或用户定义的对象返回正确的值。

字符串乘法拼接

  1. n = 3
  2. a = "Python"
  3. print(a * n)
  4. # output
  5. PythonPythonPython

将多个列表同一位置元素zip在一起

当你需要连接许多迭代器对象(如列表)以获取单个列表时,可以使用 zip 函数,结果显示每个新列表每个元素,是所有迭代器对象同一位置值的元组。

  1. Year = (1999, 2003, 2011, 2017)
  2. Month = ("Mar", "Jun", "Jan", "Dec")
  3. Day = (11,21,13,5)
  4. print(zip(Year, Month, Day))
  5. # output
  6. [(1999, 'Mar', 11), (2003, 'Jun', 21), (2011, 'Jan', 13), (2017, 'Dec', 5)]

.get获取字典中key对应的值,不存在则返回指定值

通过 [] 方式获取字典中的值时,如果键不存在则会报错,可以使用字典的 get 函数,指定键不存在时,可以返回的值。

比如字典中有键 ‘c’,则返回对应的值,否则返回 3。

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

for...else...

Python 中的 for 循环可以使用 else 关键字,如果在 for 循环中遇到 break 跳出循环,则不执行 else 子句,否则执行。

  1. for i in range(5):
  2. pass
  3. else:
  4. pass

{**d1, **d2}合并字典

  1. d1 = {'a': 1}
  2. d2 = {'b': 2}
  3. print({**d1, **d2})
  4. # output
  5. {'a': 1, 'b': 2}

求列表中前 n 个最大 / 最小的数字

使用 heapq 返回任何列表中的前 n 个最小 / 最大元素,这里 n 是指定的数字。

  1. # Python code to find 3 largest and 4 smallest
  2. # elements of a list.
  3. import heapq
  4. grades = [110, 25, 38, 49, 20, 95, 33, 87, 80, 90]
  5. print(heapq.nlargest(3, grades))
  6. print(heapq.nsmallest(4, grades))
  7. # output
  8. [110, 95, 90]
  9. [20, 25, 33, 38]

输出的第一行给出列表等级中存在的最大数字中的 3 个。 同样,输出的第二行将打印出列表等级中存在的最小元素中的 4 个,此功能的另一个特点是它不会忽略重复值。

x, y = y, x 就地交换两个数字

  1. x, y = 10, 20
  2. print(x, y)
  3. x, y = y, x
  4. print(x, y)
  5. # output
  6. 10 20
  7. 20 10

set(listNumbers)从列表中删除重复项

  1. listNumbers = [20, 22, 24, 26, 28, 28, 20, 30, 24]
  2. print("Original= ", listNumbers)
  3. listNumbers = list(set(listNumbers))
  4. print("After removing duplicate= ", listNumbers)
  5. # output
  6. Original= [20, 22, 24, 26, 28, 28, 20, 30, 24]
  7. After removing duplicate= [20, 22, 24, 26, 28, 30]

比较两个无序列表

假设你有两个包含相同元素的列表,但是两个列表中的元素顺序都不同。可以使用 collections.Counter()方法进行判断,确定它们是否元素值都相同。

  1. from collections import Counter
  2. one = [33, 22, 11, 44, 55]
  3. two = [22, 11, 44, 55, 33]
  4. print("two lists are equal.", Counter(one) == Counter(two))
  5. # output
  6. two lists are equal.

检查列表中的所有元素是否唯一

  1. def isUnique(item):
  2. tempSet = set()
  3. return not any(i in tempSet or tempSet.add(i) for i in item)
  4. listOne = [123, 345, 456, 23, 567]
  5. print("All List elemtnts are Unique ", isUnique(listOne))
  6. listTwo = [123, 345, 567, 23, 567]
  7. print("All List elemtnts are Unique ", isUnique(listTwo))
  8. # output
  9. All List elemtnts are Unique True
  10. All List elemtnts are Unique False

字节转换为字符串

要将字节转换为字符串,可以对 bytes 对象进行解码以生成字符串。

  1. byteVar = b"pynative"
  2. str = str(byteVar.decode("utf-8"))
  3. print("Byte to string is" , str )
  4. # output
  5. Byte to string is pynative

dict(zip(ItemId, names))将两个列表转换成字典

例如你有两个列表,一个列表包含键,第二个列表包含对应的值,想将这两个列表转换为一个字典。可以使用 zip 函数来进行实现。

  1. ItemId = [54, 65, 76]
  2. names = ["Hard Disk", "Laptop", "RAM"]
  3. itemDictionary = dict(zip(ItemId, names))
  4. print(itemDictionary)
  5. # output
  6. {54: 'Hard Disk', 65: 'Laptop', 76: 'RAM'}

设置小数位格式

你要显示带有 2 个小数位的任何浮点数。 例如 73.4(73.40)和 288.5400(88.54)。

  1. number= 88.2345
  2. print('{0:.2f}'.format(number))

s.ljust(10, '-') 字符串左对齐填充到10

左对齐函数 ljust 和右对齐函数 rjust,都需要指定字符串长度,以及想要填充的字符,不指定则默认填充空格。

  1. s = "12345"
  2. print(s.ljust(10, '-'))
  3. print(s.rjust(10, '0'))
  4. # output
  5. 12345-----
  6. 0000012345

https://www.zhihu.com/people/zhao-xiao-de-93/posts

一些实验中用过的python函数/方法(持续更新)的更多相关文章

  1. php常用函数(持续更新)

    每一种编程语言在用的过程中都会发现有时候要一种特定需求的功能函数,结果没有内置这样的函数,这个时候就需要自己根据已有函数编写尽可能简单的函数,下面是我在做php相关工作时积累下的函数,会持续更新,您要 ...

  2. LeetCode 题目的 Python 实现(持续更新中)

    Python-LeetCode 是一个使用 Python 语言解决 LeetCode 问题的代码库,库有以下几个方面需要注意: 所有题目都是 AC 的: 按照题目顺序,每 50 个放在一个目录下,方便 ...

  3. LeetCode python实现题解(持续更新)

    目录 LeetCode Python实现算法简介 0001 两数之和 0002 两数相加 0003 无重复字符的最长子串 0004 寻找两个有序数组的中位数 0005 最长回文子串 0006 Z字型变 ...

  4. 2.Python函数/方法(method/function)详解

    1.什么是函数 它是一段功能代码,理解为一种功能行为,在内存中有空间区域,函数需要被调用才能执行(通过函数名来调用): 好处: 1).提高代码的复用性 2).提升代码的阅读性 3).增加代码的扩展性 ...

  5. SQL Server 常用函数使用方法(持续更新)

    之前就想要把一些 SQL 的常用函数记录下来,不过一直没有实行...嘿嘿... 直到今天用到substring()这个函数,C# 里面这个方法起始值是 0,而 SQL 里面起始值是 1.傻傻分不清楚. ...

  6. Python 函数运行时更新

    Python 动态修改(运行时更新) 特性 实现函数运行时动态修改(开发的时候,非线上) 支持协程(tornado等) 兼容 python2, python3 安装 pip install realt ...

  7. python中魔法方法(持续更新)

    1.对于一个自定义的类,如果实现了 __call__ 方法,那么该类的实例对象的行为就是一个函数,是一个可以被调用(callable)的对象.例如: class Add: def __init__(s ...

  8. Python函数汇总(陆续更新中...)

    range的用法 函数原型:range(start, end, scan): 参数含义: start:计数从start开始.默认是从0开始.例如range(5)等价于range(0, 5); end: ...

  9. python笔记(持续更新)

    1.编译python遇到下面的编码问题:     SyntaxError: Non-ASCII character '\xe9' in file E:\projects\learn.py on lin ...

随机推荐

  1. Mpvue 小程序转 Web 实践总结

    介绍 Mpvue 是一个使用 Vue.js 开发小程序的前端框架.框架基于 Vue.js 核心,修改了 Vue.js 的 runtime 和 compiler 实现,使其可以运行在小程序环境中,从而为 ...

  2. java中Super指向他紧邻的父类,而不是最底层的基类

    3.2 当有两次继承时,演示super指向他紧邻的父类 我们把上面的例子扩展成两次继承, 就看出:马克-to-win,Super是一个参考(或说指针)指向他紧邻的父类,而不是最底层的基类. 例1.3. ...

  3. php 实验一 网页设计

    实验目的: 1.  能够对整个页面进行html结构设计. 2.  掌握CSS+DIV的应用. 实验内容及要求: ***个人博客网页 参考Internet网上的博客网站,设计自己的个人网页,主要包括:图 ...

  4. in a frame because it set 'X-Frame-Options' to 'sameorigin'

    不是所有网站都给  iframe嵌套的,  有的网站设置了  禁止嵌套!!! 浏览器会依据X-Frame-Options的值来控制iframe框架的页面是否允许加载显示出来, 看你们公司这么设置了!! ...

  5. 鸿蒙JS 开发整理

    目录 一.前言: 二.鸿蒙 JS UI框架 2.1 JS UI特性 2.2 架构 2.3 新的UI框架结构 三.API 四.最后 一.前言: 5月25日,华为对外宣布计划在6月2日正式举办鸿蒙手机发布 ...

  6. 在 WASI 上运行 .NET 7 应用程序

    WASI代表 WebAssembly 系统接口,WASI 让沙盒化的 WebAssembly 应用程序通过一系列类似 POSIX 的函数访问底层操作系统,允许独立于浏览器运行 WebAssembly ...

  7. SpringCloudAlibaba注册中心与配置中心之利器Nacos实战与源码分析(上)

    不断踩坑并解决问题是每个程序员进阶到资深的必要经历并以此获得满足感,而不断阅读开源项目源码和总结思想是每个架构师成长最佳途径.本篇拉开SpringCloud Alibaba最新版本实战和原理序幕,以工 ...

  8. k8s入门之Service(六)

    将一组pod公开为网络服务,通过service代理,可以实现负载均衡 一.ClusterIP 此方式只能在集群内访问 1.使用命令暴露已存在的pod (1)继续使用前面章节的案例,查看名称为nginx ...

  9. YARN线上动态资源调优

    背景 线上Hadoop集群资源严重不足,可能存在添加磁盘,添加CPU,添加节点的操作,那么在添加这些硬件资源之后,我们的集群是不能立马就利用上这些资源的,需要修改集群Yarn资源配置,然后使其生效. ...

  10. Elemnt ui 组件封装(table)

    <template> <div class="table"> <el-table :data="tableData2" :bord ...