python 生成式和高階函式

2021-09-10 19:35:59 字數 4304 閱讀 1236

print(})

print( if i % 3 == 0 })

生成乙個列表,列表元素分別為[12,22,32,…n2]

li = 

for i in range(1,9):

print(li)

print([i ** 2 for i in range(1,9)])

#[expression for i in 序列 if …]

#1.找出1-10之間的所有偶數,並返回乙個列表(包含以這個偶數為半徑的圓的面積)

import math

a = math.pi

print(a)

print([math.pi * r * r for r in range(2,11,2)])

#2.找出1~100之間所有的質數

def isprime(num):

for i in range(2,num):

if num % i == 0:

return false

else:

return true

print([i for i in range(2,101) if isprime(i)])

三、字典生成式

d = dict(a=1,b=2)

print(d)

new_d = {}

for i in d:

new_d[i.upper()] = d[i]

# print('key轉化為大寫的字典:',new_d)

print()

d = dict(a=2,b=1,c=2,b=9,a=10)

#輸出 new_d = {}

for k,v in d.items():

low_k = k.lower()

if low_k not in new_d:

new_d[low_k] = v

else:

new_d[low_k] += v

print(new_d)

print()

「」"

高階函式

實參是乙個函式名

函式的返回值也是乙個函式

「」"print(abs(-11))

#函式本身也可以賦值給變數,變數也可以指向函式

f = abs

print(f(-10))

#傳遞的引數包括函式名

def fun(x,y,f):

return f(x),f(y)

print(fun(-10,34,abs))

「」"

map()函式接收兩個引數,乙個是函式,乙個是序列

map將傳入的函式依次作用到序列的每個元素,並且

把結果作為新的序列返回

「」"#對於序列[-1,3,-5,-4]的每個元素求絕對值

print(list(map(abs,[-1,3,-5,-4])))

#對於序列的每個元素求階乘(10個,2~7之間的隨機)

import random

def factoria(x):

res = 1

for i in range(1,x+1):

res *= i

return res

li = [random.randint(2,7) for i in range(10)]

print(list(map(factoria,li)))

「」"

reduce:把乙個函式作用在乙個序列上,這個函式必須接收兩個

引數,reduce把結果繼續和序列的下乙個元素累計計算

reduce(f,[x1,x2,x3,x4,x5]) = f(f(f(f(x1,x2),x3),x4),x5)

「」"

from functools import reduce

def multi(x,y):

return x * y

print(reduce(multi,range(1,4)))

def add(x,y):

return x + y

print(reduce(add,[1,2,3,4,5]))

「」"

filter過濾函式

和map類似,也接收乙個函式和乙個序列

但是和map不同的是,filter把傳入的函式依次作用於每個元素

然後根據返回值是true還是false決定保留還是丟棄該元素

「」"

def isodd(num):

if num % 2 == 0:

return true

else:

return false

print(list(filter(isodd,range(100))))

li = [5,3,2,4]

li.sort(reverse=true)

print(li)

a = sorted(li,reverse=true)

print(a)

info =

print(sorted(info))

#按照商品數量進行排序:

def sorted_by_count(x):

return x[1]

def sorted_by_price(x):

return x[2]

def sorted_by_count_price(x):

return x[1],x[2]

print(sorted(info,key=sorted_by_count))

print(sorted(info,key=sorted_by_price))

print(sorted(info,key=sorted_by_count_price))

(2018-攜程-春招題)題目需求:

給定乙個整形陣列, 將陣列中所有的0移動到末尾, 非0項保持不變;

在原始陣列上進行移動操作, 勿建立新的陣列;

輸入:第一行是陣列長度, 後續每一行是陣列的一條記錄;40

702輸出:

調整後陣列的內容;47

200「」"

n = ''.join(input().split())

li = [int(i) for i in n]

def move_zero(item):

if item == 0:

return 2

else:

return 1

print(sorted(li,key=move_zero))

「」"

匿名函式的關鍵字為lambda,冒號前面是形參 冒號後面是返回值

「」"

from functools import reduce

def add(x,y):

return x + y

print(reduce(lambda x,y:x+y,[1,2,3,4,5]))

print(list(map(lambda x:x ** 2,range(5))))

#求10的階乘

print(reduce(lambda x,y:x*y,range(1,11)))
#匿名函式的預設引數

f = lambda x,y=2:x**y

print(f(3))

print(f(2,4))

#匿名函式的可變引數:

f = lambda *args:sum(args)

print(f(1,2,3,45,6))

#匿名函式的關鍵字引數:

f = lambda **kwargs:kwargs.values()

print(f(name='fentiao',age=10))

練習:

「」"nums = [0, 7, 0, 1, 2, 1, 5, 1, 7, 8, 0, 67, 1, 3, 4]

「」"

nums = [0, 7, 0, 1, 2, 1, 5, 1, 7, 8, 0, 67, 1, 3, 4]

print(sorted(nums,key=lambda x:1 if x == 0 else 0))

python 函式高階 列表生成式,生成器,

列表生成式 需求 迴圈0 10,把其中每個值加一並列印 文藝青年版 n list range 10 for index,i in enumerate n n i 1 print n 1,2,3,4,5,6,7,8,9,10 執行結果 裝逼青年版 n list range 10 print list ...

python函式,列表生成式及高階函式

函式 函式生命成後若不呼叫則不會執行 形式引數 位置引數 可變引數 預設引數 關鍵字引數 返回值 返回值為函式運算的結果,返回函式執行結果,可以以與元組形式返回多個返回值 eg def sum a,b return a b result sum 1,2 print result 變數的作用域區域性變...

2 3 13 Python 函式高階 列表生成式

列表生成式即list comprehensions,是python內建的非常簡單卻強大的可以用來建立list的生成式。舉個例子,要生成list 1,2,3,4,5,6,7,8,9,10 可以用list range 1,11 list range 1,11 1,2,3,4,5,6,7,8,9,10 但...