Powered by:AB_IN 局外人
P1348 日期排序
感謝jtq大佬指點。
題記:終於會調顏色和大小了,矢車菊籃。i了i了。
知識都是熬夜 肝出來的。
上代碼。
lst=list()#list[]是個空列表,list()是聲明一個列表
while True:
try:
tmp=list(map(int,input().split('/')))
except:
break
lst.append(tmp)
lst.sort(key=lambda x: (x[2],x[0],x[1]))#x爲接受的參數(即列表中的值),冒號後面爲結果
#1.按升序排的。2.按先排x[2] 再排x[0] 再排x[1]。
for i in lst:
if i[0]<10:
i[0]="0"+str(i[0])
print(f'{i[0]}/{i[1]}/{i[2]}')
一、輸入問題
一般爲了養成好習慣,用牛客網的套版
while True:
try:
#中間便是所有的代碼,函數可以寫在外面
except:
break
可是題目沒說幾個輸入,但還要把所有輸入都輸進來才能做題。則就先用這個套版只管輸入。
二、sort函數
sort() 函數用於對原列表進行排序,如果指定參數,則使用比較函數指定的比較函數。
sorted會新建一個排序好的列表並返回,而sort是修改原列表並排好序。
sorted(iterable, cmp=None, key=None, reverse=False)
list.sort(cmp=None, key=None, reverse=False)
key – 主要是用來進行比較的元素,只有一個參數,具體的函數的參數就是取自於可迭代對象中,指定可迭代對象中的一個元素來進行排序。
很抽象,簡單來說,就是key=一個函數,函數接受一個變量,對返回的變量進行排序。
cmp —在C++裏比較常用,用key好一點。
簡單的排序。
lst.sort()
複雜點的結構體排序
def getkey(x):
return x[0]#用第一個排
lst.sort(key=getkey)
三、lambda函數
lst.sort(key=lambda x: (x[2],x[0],x[1]))
也可以寫成
def getkey(x):
return (x[2],x[0],x[1])
lst.sort(key=getkey)
故這就是一個匿名函數,簡潔函數的表示。
def f(x):
return x+1
f=lambda x: x+1
就這倆玩意是一樣的。
目前我的知識面,僅限於應用於 過濾、映射、結構體。
首先
map
我們知道用map輸入很方便
n,m=map(int,input().split())
那麼怎麼應用lambda呢?
tmp=[0,1,2,3,4]
lst=list(map(lambda x: x+1,tmp))
print(lst)
#[1, 2, 3, 4, 5]
典型的函數式編程,就不用一個一個循環改了。
其次
filter
tmp=[0,1,2,3,4]
lst=list(filter(lambda x: x%2==0,tmp))
print(lst)
#[0, 2, 4]
lst=list(filter(lambda x: x%2==0,range(0,5)))
print(lst)
#[0, 2, 4]
四、輸出問題
可以這麼寫,i已經是個列表了,比比值就行了
for i in lst:
if i[0]<10:
i[0]="0"+str(i[0])
print(f'{i[0]}/{i[1]}/{i[2]}')
也可以這麼寫,將i裏元素全轉換成字符串
for i in lst:
i=[str(j) for j in i]
if len(i[0])==1:
i[0]='0'+i[0]
print('/'.join(i))#連接字符串數組
這裏的第二行還可以這麼寫,把i裏的元素變成字符串,由於map是映射,故最外面套上list()
i=list(map(str,i))
完結。