需求1:快速生成驗證碼(內推碼)
import random
# 了解該模組的方法!
import string
# 數字和字母(大小寫)-->構成列表(字串)--->擷取若干數字
code_str = string.ascii_letters + string.digits
# code_str1 = string.ascii_lowercase
# code_str2 = string.ascii_uppercase
# 預設引數
def gen_code(len=4):
# code = ''
# for i in range(len):
# new_s = random.choice(code_str)
# code += new_s
## return code
# join() 方法用於將序列中的元素以指定的字元連線生成乙個新的字串
return ''.join(random.sample(code_str, len))
# 產生若干個驗證碼-->列表生成式!
print([gen_code() for i in range(10)])
二、高階函式sorted函式
(1)sort排序回顧
list1 = [1, 6, 5, 8, 3]
tulpe1 = (1, 6, 5, 8, 3)
# 強調:只有list列表有此方法(元組沒有此方法),是原址排序!!!
list1.sort()
print(list1)
(2)sorted高階排序
# 注意:辯證sort和sorted的區別!
list1 = [1, 5, 3, 7, 10, 9, 18]
list2 = sorted(list1)
print(list1)
print('-----------------')
print(list2)
print(list1 is list2) false
# 說明:sorted開闢了乙個新的位址空間--->對原來資料的拷貝,新的位址儲存!
2.1)預設排序
說明:排序的物件是可迭代的物件即可,相比sort更寬容!
字典排序:缺省會按照dict的key值進行排序,最後返回的結果是乙個對key值排序好的list!
排序的控制方式:基於key函式(可以做文章)、基於cmp函式(了解)、基於reverse函式(預設是false,降序排序)!
##########key函式的說明###########
(1)內建函式進行排序
從python2.4開始,list.sort()和sorted()函式增加了key引數來指定乙個函式
特點:此函式將在每個元素比較前被呼叫,key引數的值為乙個函式,此函式只有乙個引數且返回乙個值用來進行比較!
通俗的講:排序並不由源元素而決定,而是根據key指定呼叫函式的結果決定!
練習1
# 需求1:正負數絕對值排序!
list4=[1,-5,3,-10,9,8,-12,6,13]
list5= sorted(list4,key=abs) #python內建的abs函式
print(list5)
# [1, 3, -5, 6, 8, 9, -10, -12, 13]
練習2
# 需求:字串的比較
# 說明:ascii-->大寫《小寫
list6=['dfs','fds','tda','eds']
print(list6)
# 預設以ascii比較--->大寫《小寫(所以大寫在前,小寫在後)
print(sorted(list6))
# 需求:轉換為小寫後進行比較
print(sorted(list6,key=str.lower))
# 需求:轉化為大寫後進行比較
print(sorted(list6,key=str.upper))
# 需求:說明的是-->recersed是將排序後的結果進行反轉!
print(sorted(list6,key=str.upper,reversed=true))
(2)自定義函式進行排序
需求1
"""
1.假設我們用一組tuple表示學生名字和成績,l =[('bob', 75), ('adam', 92), ('bart',66),('lisa', 88)],
1-->按名字進行排序(不歧視)
2-->按成績進行排序
"""l =[('bob', 75), ('adam', 92), ('bart', 66),('lisa', 88)]
print(sorted(l,key=lambda x:x[0]))
# 按照成績進行排序
print(sorted(l,key=lambda x:x[1]))
需求2
my_dict =
result = sorted(my_dict)
print result
#預設對dict排序,不指定key引數,會預設對dict的key值進行比較排序!
#result輸出: ['a', 'b', 'c']
result2 = sorted(my_dict, key=lambda x:my_dict[x])
print result2
#指定key引數,根據dict的value排序
#result2輸出:['b', 'a', 'c']
#注意:輸出的還是key!!!
需求3
"""
題目需求:
(1)給定乙個整形陣列,將陣列中所有的0移動到末尾, 非0項保持不變;
(2)在原始陣列上進行移動操作, 勿建立新的陣列;
# 輸入:
第一行是陣列長度, 後續每一行是陣列的一條記錄;40
7 0
2# 輸出:
調整後陣列的內容;72
00
"""def move_zore(item):
if item == 0:
return 2
else:
return 1
# 呼叫函式!
for i in sorted(li,key=move_zore):
print(i)
需求4:
"""
有乙個整數列表(10個元素),要求調整元素的順序:把奇數放在前面 偶數放在後面
"""# 方式1
list1=[1,2,19,18,16,14,13,17,22]
print([i for i in sorted(list1,key=lambda j:(j+1)%2)])
# 說明:相當於根據return (j+1)%2結果-->[0,1]來對映進行排序!
# 方式2 -->含義大概就是偶數是2,奇數是1!
#print(sorted(list1,key=lambda x:2 if x%2 == 0 else 1))
# if x%2 ==0:
# return 2
# else:
# return 1
需求5:
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))
filter 函式 sorted 函式
coding utf 8 filter 函式是用於對乙個序列進行過濾或者篩選的操作。兩個引數 1 函式,設定過濾內容的邏輯 2 序列,list str都可以。過濾偶數和奇數功能 def filter function number 返回true或者false return number 2 1 該函...
高階函式 sorted函式
sorted 函式 格式 sorted iterable,key none,reverse false 說明 iterable 可迭代物件 key 函式是用來提供乙個值,這個值將作為排序的依據 reverse 標誌是用來設定是否降序排序 預設為false,公升序排列 示例 l 5,2,4,0,3,1...
sorted 函式用法
sorted 函式對所有可迭代的物件進行排序操作。sort 和sorted 有些差別,具體區別為 sort 應用在list,sorted 可以對所有可迭代的物件進行排序操作。list的sort方法返回的是對已經存在的列表進行操作,而sorted返回的是乙個新的list,而不是在原來的基礎上進行的操作...