今天分享21个python小技巧,他们非常的简短,但是善于利用可能会三生万物. 交流加wx:rovesoul
更多可看我博客其他内容
两个变量可以通过这种方式互相互换着赋值
a = 5
b = 10
a, b = b, a
print(a) # 10
print(b) # 5
这个功能主要展示的不是快速判断是不是偶数,而是bool判断的用法.因为10可以被2整除,所以余数为0,因此它是==0的,如果换成is_even(3)
那就返回False了.
def is_even(num):
return num % 2 == 0
is_even(10) # True
这个案例使用换行符分割的,实际应用中,随机应变.
def split_lines(s):
return s.split('\n')
split_lines('50\n python\n snippets')
# ['50', ' python', ' snippets']
这个例子中,数字5占了28内存空间大小,我把这个数字加到9999返回依然是28
import sys
print(sys.getsizeof(5)) # 28
print(sys.getsizeof("Python")) # 55
这个案例告诉我们字符串的翻转用法,相应的简单字符串可以翻转,以后的图片\音频\视频,一样可以翻转
language = "sumer-minus"
reversed_language = language[::-1]
print(reversed_language) # sunim-remus
从这里提取两个概念:1如何打印n遍,理解函数调用
def repeat(string, n):
return (string * n)
a=repeat('oop!',10)
print(a)
>>>oop!oop!oop!oop!oop!oop!oop!oop!oop!oop!
这个小代码把字符串翻转,和bool又一次加深理解
def palindrome(string):
return string == string[::-1]
print(palindrome('python')) # False
strings = ['老虎', '老鼠', '蟑螂']
print('kill'.join(strings))
# 老虎kill老鼠kill蟑螂
如何将两个列表合并并扣除其中的重复项呢?可以看看这个方法
def union(a,b):
return list(set(a + b))
union([1, 2, 3, 4, 5], [6, 2, 8, 1, 4])
# [1,2,3,4,5,6,8]
def unique_elements(numbers):
return list(set(numbers))
unique_elements([1, 2, 3, 2, 4])
# [1, 2, 3, 4]
*args什么意思呢?可以点击看这篇,其中的0.00意思是求和后再加多少,如果不懂,点击看这儿
def average(*args):
return sum(args, 0.0) / len(args)
average(5, 8, 2)
# 5.0
def unique(list):
if len(list)==len(set(list)):
print("所有数据都是唯一的")
else:
print("并不唯一")
unique([1,2,3,4,5])
# 所有数据都是唯一的
def most_frequent(list):
return max(set(list), key = list.count)
numbers = [1, 2, 3, 2, 4, 3, 1, 3]
most_frequent(numbers)
# 3
π在math 库中是有定义的,就叫做math.pi
import math
def degrees_to_radians(deg):
return (deg * math.pi) / 180.0
degrees_to_radians(90)
# 1.5707963267948966
这个时间跟电脑速度有关
import time
start_time = time.time()
a,b = 5,10
c = a+b
end_time = time.time()
time_taken = (end_time- start_time)*(10**6)
print("运行这个耗费微秒数为:", time_taken)
# 运行这个耗费微秒数为: 2.1457672119140625
from functools import reduce
import math
def gcd(numbers):
return reduce(math.gcd, numbers)
gcd([24,108,90])
# 6
x = lambda a, b, c : a + b + c
print(x(5, 10, 20))
# 35
# 或者也可以这样
def x(a, b, c):
return a + b + c
print(x(5, 10, 30))
# 35
对一个列表每一个元素都进行操作的话,可以用map函数,下边是个小案例
def multiply(n):
return n*n
list1 =[1, 2, 3]
result = list(map(multiply, list1))
print(result)
# [1, 4, 9]
arr = [1, 2, 3, 4, 5]
arr = list(filter(lambda x: x % 2 == 0, arr))
print(arr)
# [2, 4]
numbers = [1, 2, 3]
squares = [number**2 for number in numbers]
print(squares)
# [1, 4, 9]
切片用于从给定序列中提取元素的连续序列或子序列。 以下函数用于合并两个切片操作的结果。 首先,我们将列表从索引d切到末尾,然后从开始切成索引d。
def rotate(arr, d):
return arr[d:] + arr[:d]
if __name__ == '__main__':
arr = [1, 2, 3, 4, 5]
arr = rotate(arr, 2)
print (arr) # [3, 4, 5, 1, 2]
最后的代码段用于从一行开始调用多个函数并评估结果。
def add(a, b):
return a + b
def subtract(a, b):
return a - b
a, b = 5, 10
print((subtract if a > b else add)(a, b)) # 15
print((subtract if a < b else add)(a, b)) # -5