學(xué)習(xí)于公眾號(hào):凹凸玩數(shù)據(jù)發(fā)布的文章
寫函數(shù):就是寫一個(gè)算法,用來(lái)實(shí)現(xiàn)一些功能片吊。
01.兩個(gè)變量互換
兩個(gè)變量可以通過(guò)這種方式互相互換賦值
a=5
b=10
a,b=b,a
print(a) #此時(shí)a=b=10
print(b) #此時(shí)b=a=5
02.檢查是不是偶數(shù)
這個(gè)功能主要是利用bool類型進(jìn)行判斷
def is_even(num):
return num%2==0
print(is_even(10)) #返回的應(yīng)該是true侯嘀,返回true即為偶數(shù)
print(is_even(3)) #返回的應(yīng)該是False破加,返回False即不為偶數(shù)
03.分割一個(gè)字符串為一個(gè)列表
這個(gè)案例使用換行符分割收恢,實(shí)際應(yīng)用中帖族,可以更改為任何符號(hào)
def split_lines(s):
return s.split('/n')
a=split_lines('yang/n mu/n sen/n sen')
print (a)
運(yùn)行后:
[‘yang’,'mu','sen','sen']
04.查找對(duì)象使用內(nèi)存的大小
這個(gè)例子調(diào)用sys的看內(nèi)存占用情況函數(shù) sys.getsizeof()
import sys
print(sys.getsizeof(5))
print(sys.getsizeof('python'))
運(yùn)行后:
28
55
05.翻轉(zhuǎn)字符串
簡(jiǎn)單的字符串可以翻轉(zhuǎn)武契,以后的圖片募判、音頻、視頻一樣可以翻轉(zhuǎn)咒唆。如果你在一個(gè)函數(shù)里用這個(gè)功能届垫,可以解決某些場(chǎng)景里的問(wèn)題。
language='yang-wang'
reversed_language = language[::-1]
print(reversed_language)
運(yùn)行后:
gnaw-gnay
06.打印字符串X遍的小程序
1.考慮如何打印N遍全释。2.理解函數(shù)調(diào)用
def repeat(string,n):
return(string * n)
a=repeat('y',10)
print(a)
運(yùn)行后:
yyyyyyyyyy
07.檢查一個(gè)字符串是否與他的翻轉(zhuǎn)相同
翻轉(zhuǎn)+bool判斷
def palindrome(string):
return string==string[::-1]
print (palindrome('python'))
運(yùn)行后:
False #False代表不相等不相同
08.把一個(gè)列表拼裝成字符串
用到了列表的join方法
strings=['1','2','3']
print('num'.join(strings))
運(yùn)行后:
1num2num3
09.將兩個(gè)列表刪除重復(fù)項(xiàng)并合并
list(set())的功能是:對(duì)原列表去重并按從小到大排序
def union(a,b):
return list(set(a+b))
a=union([1,2,3,4,5],[6,2,8,1,4])
print(a)
運(yùn)行后:
[1, 2, 3, 4, 5, 6, 8]
10.將列表去重
def unique_elements(numbers):
return list(set(numbers))
a=unique_elements([1,2,2,3,4])
print(a)
運(yùn)行后:
[1, 2, 3, 4]
11.找到一組數(shù)字的均值
*args 用來(lái)將參數(shù)打包成tuple給函數(shù)體調(diào)用装处;
函數(shù)mean()可以來(lái)計(jì)算均值,也可以自己造一個(gè)浸船,如下:
def average(*args):
return sum(args,0.0)/len(args) # sum()用法:sum((2, 3, 4), 1),元組計(jì)算總和后再加 1
a=average(5,8,2:
print(a)
運(yùn)行后:
5.0
12.檢查一個(gè)數(shù)組里面是不是都是唯一的值
def unique(list):
if len(list)==len(set(list)):
print('所有數(shù)據(jù)都是唯一的')
else:
print('并不唯一')
a=unique([1,2,3,4,5])
print(a)
運(yùn)行后:
所有數(shù)據(jù)都是唯一的
None
13.找到列表頻率最大的數(shù)據(jù)(還未理解透徹)
def most_frequent(list):
return max(set(list),key=list.count)
numbers=[1,2,3,2,4,3,1,3]
a=most_frequent(numbers)
print(a)
運(yùn)行后:
3
14.角度變弧度(此處往下均未學(xué)習(xí))
import math
def degrees_to_radians(deg):
return (deg * math.pi) / 180.0
degrees_to_radians(90)
# 1.5707963267948966
15.打印運(yùn)行計(jì)算花費(fèi)時(shí)間
import time
start_time = time.time()
a,b = 5,10 #隨便一個(gè)過(guò)程
c = a+b #隨便一個(gè)過(guò)程
end_time = time.time()
time_taken = (end_time- start_time)*(10**6)
print("運(yùn)行這個(gè)耗費(fèi)微秒數(shù)為:", time_taken)
# 運(yùn)行這個(gè)耗費(fèi)微秒數(shù)為: 2.1457672119140625
16.找到一組數(shù)的最大公因數(shù)
借助工具functools
from functools import reduce
import math
def gcd(numbers):
return reduce(math.gcd, numbers)
gcd([24,108,90])
# 6
17.使用lambda公式
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
18.使用map函數(shù)
對(duì)一個(gè)列表每一個(gè)元素都進(jìn)行操作的話,可以用map函數(shù),下邊是個(gè)小案例
def multiply(n):
return n*n
list1 =[1, 2, 3]
result = list(map(multiply, list1))
print(result)
# [1, 4, 9]
19.使用過(guò)濾函數(shù)-filter
arr = [1, 2, 3, 4, 5]
def Even(x):
return list(filter(lambda x: x % 2 == 0, arr))
Even(arr)
# [2, 4]
20.列表連續(xù)操作
numbers = [1, 2, 3]
def squares(nums):
return [number**2 for number in nums]
squares(numbers)
# [1, 4, 9]
21.切片操作
切片用于從給定序列中提取元素的連續(xù)序列或子序列妄迁。以下函數(shù)用于合并兩個(gè)切片操作的結(jié)果找前。首先,我們將列表從索引d切到末尾判族,然后從開(kāi)始切成索引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)
# 結(jié)果:[3, 4, 5, 1, 2]
22.使用鏈功能
最后的代碼段用于從一行開(kāi)始調(diào)用多個(gè)函數(shù)并評(píng)估結(jié)果。
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