python打乱list_超实用!每 30 秒学会一个 Python 小技巧,GitHub 标星 5300!

公众号关注 “GitHubDaily”

设为 “星标”,每天带你逛 GitHub!

94e6f9093c222fc7305ec3115e506fe0.png很多学习 Python 的朋友在项目实战中会遇到不少功能实现上的问题,有些问题并不是很难的问题,或者已经有了很好的方法来解决。当然,孰能生巧,当我们代码熟练了,自然就能总结一些好用的技巧,不过对于那些还在刚熟悉 Python 的同学可能并不会那么轻松。本次给大家推荐一个学习这些技巧的很好的资源 “30-seconds-of-python”,所有技巧方法只要 30 秒就能 get 到,完全可以利用业务时间不断积累。下面赶紧来看一下。
https://github.com/30-seconds/30-seconds-of-python
1. 内容目录下面是 30 秒学 Python 的整个目录,分为几大板块:List、Math、Object、String、Utility,以下是整理的思维脑图。

e2b10fa71692f065c78b7877ab06d26e.png

我挑选了 10 个实用并很有意思的方法分享给大家,其余的感兴趣可以自行学习。1. List:all_equal

功能实现:检验一个列表中的所有元素是否都一样。

解读:使用[1:] 和 [:-1] 来比较给定列表的所有元素。

def all_equal(lst):return lst[1:] == lst[:-1]

举例:

all_equal([1, 2, 3, 4, 5, 6]) # False
all_equal([1, 1, 1, 1]) # True
2. List:all_unique

功能实现:如果列表所有值都是唯一的,返回 True,否则 False

解读:在给定列表上使用集合 set() 去重,比较它和原列表的长度。

def all_unique(lst):return len(lst) == len(set(lst))

举例:

x = [1,2,3,4,5,6]
y = [1,2,2,3,4,5]
all_unique(x) # True
all_unique(y) # False

3. List:bifurcate

功能实现:将列表值分组。如果在 filter 的元素是 True,那么对应的元素属于第一个组;否则属于第二个组。

解读:使用列表推导式和 enumerate() 基于 filter 元素到各组。

def bifurcate(lst, filter):return [
[x for i,x in enumerate(lst) if filter[i] == True],
[x for i,x in enumerate(lst) if filter[i] == False]
]

举例:

bifurcate(['beep', 'boop', 'foo', 'bar'], [True, True, False, True])

# [ ['beep', 'boop', 'bar'], ['foo'] ]

4. List:difference

功能实现:返回两个 iterables 间的差异。

解读:创建 b 的集合,使用 a 的列表推导式保留不在_b 中的元素。

def difference(a, b):
_b = set(b)return [item for item in a if item not in _b]

举例:

difference([1, 2, 3], [1, 2, 4]) # [3]

5. List:flatten

功能实现:一次性的整合列表。

解读:使用嵌套的列表提取子列表的每个值。

def flatten(lst):return [x for y in lst for x in y]

举例:

flatten([[1,2,3,4],[5,6,7,8]]) # [1, 2, 3, 4, 5, 6, 7, 8]

6. Math:digitize

功能实现:将一个数分解转换为个位数字。

解读:将 n 字符化后使用 map() 函数结合 int 完成转化

def digitize(n):return list(map(int, str(n)))

举例:

digitize(123) # [1, 2, 3]

7. List:shuffle

功能实现:将列表元素顺序随机打乱。

解读:使用 Fisher-Yates 算法重新排序列表元素。

from copy import deepcopyfrom random import randintdef 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]

8. Math:clamp_number

功能实现:将数字 num 钳在由 a 和 b 边界值规定的范围中。

解读:如果 num 落尽范围内,返回 num;否则,返回范围内最接近的数字。

def clamp_number(num,a,b):return max(min(num, max(a,b)),min(a,b))

举例:

clamp_number(2, 3, 5) # 3
clamp_number(1, -1, -5) # -1
9. String:byte_size

功能实现:返回字符串的字节数。

解读:使用 string.encode('utf-8') 解码给定字符串,返回长度。

def byte_size(string):return len(string.encode('utf-8'))

举例:

byte_size('?') # 4
byte_size('Hello World') # 11

10. Math:gcd

功能实现:计算几个数的最大公因数。

解读:使用 reduce() 和 math.gcd 在给定列表上实现。

from functools import reduceimport mathdef gcd(numbers):return reduce(math.gcd, numbers)

举例:

gcd([8,36,28]) # 4

以上就是 30 秒学 python 的各种小技巧。怎么样,对于一些常见操作是不是有了一些新的启发,除此之外,还有很多其它技巧可以慢慢学习,希望对各位读者有所帮助。

https://github.com/30-seconds/30-seconds-of-python

---

以上,便是今日分享,觉得不错,还请点个在看,谢谢~

推荐阅读:

神器!输错命令,fuck 一下,就能自动纠正!

史上最大中文知识图谱,规模达 1.4 亿,现开源下载!

在对比了 GitHub 5000 个 Python 项目之后,我们精选出了这 36 个!

「GitHub 交流群」已开放想入群的可在公众号后台回复「入群」

55c72343b00d01090b1e8df3395c93ec.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/244204.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(开源)Flask+Vue+Bootstrap3 人力资源用Web数据库

闲着没事写了一个轻量级web数据库,在网页端访问并操作SQL,可以进行Excel(xlsx)数据导入\导出,包含用户注册\登录\授权功能,密码有hash,授权目前比较简陋:后端使用了一个列表储存授权用户 已授权用户&#…

access找不到输入表或者dual_在Access窗体中显示指定路径的图片

↑↑↑点击上方图片,了解详情在Access中,如果把图形对象以OLE格式的字段保存,那么在窗体中可以直接显示出图片来。但是这样做有以下不足:一、需要将图片逐一插入到表中,工作量太大。二、使数据库文件变得庞大。三、相同…

LeetCode 168. Excel列表名称详解

刷到了这一道简单难度题 https://leetcode-cn.com/problems/excel-sheet-column-title/https://leetcode-cn.com/problems/excel-sheet-column-title/ 粗看就是一道进制转换题不过容易掉坑里。 首先略讲一下进制转换, 以701为例,该数字可以转换为以下…

可视化管理_RFID技术实施智能仓储管理可视化

仓储物流管理在各个行业都非常重要,RFID技术助力仓储物流信息管理提高供应链管理的透明度和库存周转率,这样有效减少缺货损失,提高企业内的仓储物流效率。仓库管理过程中,存在区域划分笼统,不容易辨识,货物…

(包含重力矢量)Pygame粒子模拟

半成品,目前速度不能修改,另外某些状况下路径会比较奇怪,因为没有速度计算,包含了重力矢量,可以修改重力方向 import pygame as pg import math import time import random import mathclass Particle(): #Tile is for…

小米蓝牙左右互联_解决不同品牌智能家居的兼容问题,小米米家智能多模网关发布...

如今智能家居种类可谓异常丰富,许多智能家居确实能让日常生活变得更加便捷。但是,相信许多智能家居爱好者都有一个烦恼,不同的品牌智能家居几乎不能实现交互,比如现在正使用Zigbee协议的智能家居,但新购置的智能家居却…

Pygame列表(链表)简单实现贪吃蛇

主要算法: 创建一个二维矩阵映射到屏幕上的像素,逻辑在该矩阵中实现 移动通过4个矢量完成,矢量储存在列表中按照 上右下左 的顺序排列(顺时针90度), 当前矢量以0-3的数字表达,这样进行加二除…

Pygame 整活五子棋

很早之前写了一个类似的五子棋,没有做到pygame里面,闲着没事给整过来了,主要就是加了一个鼠标映射坐标。 表情被锤会变脸。 设置的0积分不知道能不能下载 https://download.csdn.net/download/ChillingKangaroo/82109145 代码不多&#x…

读进程和写进程同步设计_浅谈unix进程进程间通信IPC原理

什么是进程进程间通信进程间通信即为不同进程之间通信,进程同步是进程间通信的一种unix进程间通信的分类有哪些System V进程间通信方式包含:System V消息队列System V信号量System V共享内存UNIX进程间通信方式包含:匿名管道命名管道信号POSI…

(Ipython)Matplotlib 中将二叉树可视化

(注意之前代码有错误目前已更新) 最近学习黑红二叉树,我想如果把二叉树可视化在操作的时候如果出错会比较容易发现。 在网上搜了一圈只有比较简单的ascii 的代码。 自己用Ipython写了一个,比较适合学生。 PS:算法没…

其中一个页签慢_VBA实战技巧15:创建索引页

学习Excel技术,关注微信公众号:excelperfect在工作簿中有许多工作表时,我们可以创建一个单独的工作表当作索引页,在其中创建到每个工作表的链接,就像目录一样,不仅方便查看工作簿中的工作表名称&#xff0c…

Python使用OpenCV 卷积核 实现康威生命游戏

"Mozart, Beethoven, and Chopin never died. They simply became music." 康威生命游戏规则十分简单,简化后如下: 一个“细胞”(或者说单元)分为生或死两种状态, 如果活相邻细胞有2或3个活细胞 该细胞活…

verilog赋多位值_verilog赋值

我现在要用且只能用八位的拨片开关对两个四位变量t1l,t1h赋值,且这两个变量t1l,t1h是要输出的,所以我编了一下程序,先通过拨片开关对输入变量d0,d1赋值,然后将d0,d1的值赋给t1l,t1...我现在要用且只能用八位的拨片开关对两个四位变…

Python/OpenCV 使用傅里叶变换与高斯平滑分析轮廓轨迹

该方法基本思想是通过分析高低频信息检测出轮廓碰伤、运动轨迹突变等信息,在工业上应用可能比较广泛, 对各种不规则形状都能分析,不过对高频信息多的复杂形状可能不好区分形状与噪音。 在这个例子中讲使用一个有鼓包的鸡蛋 import numpy as…

实现mvcc_一文读懂 etcd 的 mvcc 实现

提到事务必谈 ACID 特性, 基于悲观锁的实现会有读写冲突问题,性能很低,为了解决这个问题,主流数据库大多采用版本控制 mvcc[1] 技术,比如 oracle, mysql, postgresql 等等。读可以不加锁,只需要读历史版本即可 (写写还…

Pygame 粒子物理:Numba实现同时渲染十万+像素

图中同时渲染了十万个像素,没有明显掉帧 我对Pygame的印象一直是慢的扣脚的,直到前段时间看到了一段MandelBrot代码(源地址弄丢了)其中使用了这个功能:pygame.surfarray.make_surface() 这里可以直接把numpy阵列转换为pygame.su…

“vector”: 不是“std”的成员_libcxx 的 std::function 源码分析

链接&#xff1a;functional。其中 std::function 的主体内容在 2100 多行。先来看 function 的头部。template<class _Rp, class ..._ArgTypes> class _LIBCPP_TEMPLATE_VIS function<_Rp(_ArgTypes...)>: public __function::__maybe_derive_from_unary_function…

python验证身份证号码大全_身份证号码处理技巧大全

身份证号码处理技巧大全&#xff0c;汇总了常用的身份证号码处理六大技巧&#xff1a;不需要复杂的公式&#xff0c;点点鼠标即可完成&#xff0c;简单快捷&#xff0c;下面将详细介绍六大功能的具体用法。(文章最后有工具和演示文件的下载地址&#xff0c;可以下载下来同步操作…

语言print如何实现连续输出_【每日一题】如何实现一个高效的单向链表逆序输出?...

今后&#xff0c;动力节点Java学院将每天为大家带来一道大厂面试真题&#xff0c;这些面试题都是大厂技术专家们结合多年的工作、面试经验总结提炼而成的面试真题。通过这些面试题&#xff0c;还可以间接地了解技术大牛们出题思路与考察要点。建议大家收藏并分享给更多需要的人…

恩尼格玛模拟器_用C语言编的恩格尼码模拟器

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼void enumio(char pie1[],char pie2[],char pie3[],char pier[],char ch0[],char chz[],char ip[],char k[],int cou){ int check(char *a);int excheck(char *a);int compare(char *le,char *unle);int factorial(int n);void cyc…