亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 lambda 解包變量

使用 lambda 解包變量

元芳怎么了 2023-07-05 18:03:35
附加背景:    while True:        Surface = input(Fmt.cleaveSurface).split('-');print('\n')        if Surface != [''] and (len(Surface) == 2):             [            self.cleaved.update({i + 1 : [*layers[i]]})             for i in range(int(Surface[0]),int(Surface[1])+1)            ]        else: print('Exiting...\n'); raise SystemExit        for i in range(len(self.cleaved)):            if self.format == 'Abinit':                cellSort = sorted(self.cleaved.items(),                     key = lambda x:(x[1][0],x[1][self.sortBy[0]]));                print(Fmt.abinit.format(*cellSort[i][1][1:4],cellSort[i][1][0]))            if self.format in ['','Quantum']:                cellSort = sorted(self.cleaved.items(),                     key = lambda x: (x[1][self.sortBy[0]],x[1][self.sortBy[1]],x[1][self.sortBy[2]]))                print(Fmt.quantum.format(*cellSort[i][1]))        netCharge = int(sum([self.charges.get(data[0], 'Null') for data in self.cleaved.values()]));我想清理一下這個聲明:layeredCell = sorted(cell.items(), key = lambda x:(x[1][self.sortBy[0]],x[1][self.sortBy[1]],x[1][self.sortBy[2]]))以下是 self.cleaved 格式的示例:{ 2: ['O', 0.01, -0.8, -0.195], 3: ['Pb', -0.251, -0.574, -0.1135],     ...self.sortBy是 1,2,3 的一些排列的列表,它規定了 self.cleaved 的排序順序示例:sortBy = [3,1,2] 我不確定解包運算符需要使用什么語法,但我猜它會類似于*[x[1][*self.sortBy[:3]]?
查看完整描述

1 回答

?
楊魅力

TA貢獻1811條經驗 獲得超6個贊

我們可以使用列表理解來做這樣的事情

key = lambda x: tuple(x[1][self.sortBy[i]] for i in range(3))


查看完整回答
反對 回復 2023-07-05
  • 1 回答
  • 0 關注
  • 115 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號