本文共 2509 字,大约阅读时间需要 8 分钟。
很多学习Python的朋友在项目实战中会遇到不少功能实现上的问题,有些问题并不是很难,但却有一些巧妙的解决方法。对于刚熟悉Python的同学来说,这些技巧可能并不容易掌握,但只要熟练掌握后,项目效率会有很大提升。
最近,我发现了一份非常实用的资源——"30-seconds-of-python"。这个资源可以让你在30秒内掌握各种Python技巧,非常适合在业务时间里不断积累。
以下是30秒学Python的目录,涵盖了List、Math、Object、String、Utility等多个板块。我们将从中挑选10个实用且有趣的方法分享给大家,其他方法可以根据需要自行探索。
功能实现:检查列表中所有元素是否相同。 解读:比较列表从第二个元素到倒数第二个元素的子列表与整个列表是否相同。
def all_equal(lst): return lst[1:] == lst[:-1]
示例:
all_equal([1, 2, 3, 4, 5, 6]) # Falseall_equal([1, 1, 1, 1]) # True
功能实现:检查列表中的所有元素是否唯一。 解读:将列表转换为集合,比较集合的长度与列表的长度。
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) # Trueall_unique(y) # False
功能实现:将列表分成两组,基于布尔值分割。 解读:使用列表推导式和enumerate()函数,根据布尔值将元素分配到两组。
def bifurcate(lst, filter): return [ [x for i,x in enumerate(lst) if filter[i]], [x for i,x in enumerate(lst) if not filter[i]]]
示例:
bifurcate(['beep', 'boop', 'foo', 'bar'], [True, True, False, True]) # [['beep', 'boop', 'bar'], ['foo']]
功能实现:返回两个可迭代对象之间的差异。 解读:将第二个可迭代对象转换为集合,遍历第一个可迭代对象保留不在集合中的元素。
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]
功能实现:将嵌套列表一次性展开。 解读:使用列表推导式遍历嵌套列表的每个子列表。
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]
功能实现:将数字转换为各位数字列表。 解读:将数字转换为字符串,然后使用map()函数和整数转换。
def digitize(n): return list(map(int, str(n)))
示例:
digitize(123) # [1, 2, 3]
功能实现:随机打乱列表元素。 解读:使用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]
功能实现:将数字钳制在指定范围内。 解读:使用min()和max()函数将数字限制在给定范围内。
def clamp_number(num,a,b): return max(min(num, max(a,b)), min(a,b))
示例:
clamp_number(2, 3, 5) # 3clamp_number(1, -1, -5) # -1
功能实现:返回字符串的字节数。 解读:使用字符串的编码方法获取字节数。
def byte_size(string): return len(string.encode('utf-8')) 示例:
byte_size('?') # 4byte_size('Hello World') # 11 功能实现:计算多个数字的最大公因数。 解读:使用reduce()和math.gcd函数。
from functools import reduceimport mathdef gcd(numbers): return reduce(math.gcd, numbers)
示例:
gcd([8,36,28]) # 4
以上就是30秒学Python的各种小技巧。这些方法对于日常开发中的各种问题都有很好的应用场景。希望这些技巧能为你的Python学习之路带来一些帮助!
转载地址:http://plsd.baihongyu.com/