第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

在不同維度的列表中對(duì)對(duì)進(jìn)行排序

在不同維度的列表中對(duì)對(duì)進(jìn)行排序

蕪湖不蕪 2021-06-28 17:51:18
我有一個(gè)列表,其中包含不同大小的元素(有些甚至是空的),如下所示:a1 =  [array([[83, 84]]), array([[21, 24], [32, 53],[54, 56]]), array([[21,24],[32, 37],[45, 46]]), [], []]在這個(gè)列表中,值要么是成對(duì)的(在數(shù)組中),要么就是空的。我想要做的就是根據(jù)它們的差異按降序?qū)λ袑?duì)進(jìn)行排序,并保留它們?cè)谠剂斜碇械奈恢?索引(即a1)。例如,我想要的輸出是:a1_sorted = [[32,53],[32,37],[21,24],[21,24],[54,56],[45,46],[83,84],[],[]] a1_index = [[1,1],[2,1],[1,0],[2,0],[1,2],[2,2],[0,0],[3,0],[4,0]]由于空元素沒有 2D 位置,下面僅指示元素的第一個(gè)索引也是一個(gè)合適的選擇:a1_index = [1,2,1,2,1,2,0,3,4]簡(jiǎn)單地迭代列表?xiàng)l目是我最初的方法,但處理空元素和不同的維度大小已經(jīng)減慢了這項(xiàng)工作的速度。關(guān)于最佳解決方案的任何想法?
查看完整描述

2 回答

?
不負(fù)相思意

TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超10個(gè)贊

您可以使用enumerate為列表和子列表生成索引,然后使用列表理解來生成與它們的索引相結(jié)合的對(duì)作為元組進(jìn)行排序以輸出,并根據(jù)需要解壓縮到兩個(gè)不同的變量:


a1_sorted, a1_index = zip(*sorted(((t, [i, j])

                      for i, l in enumerate(a1) for j, t in enumerate(list(l) or [[]])),

                      key=lambda t: -abs(t[0][1] - t[0][0]) if len(t[0]) else 0))

a1_sorted 會(huì)成為:


[[32, 53], [32, 37], [21, 24], [21, 24], [54, 56], [83, 84], [45, 46], [], []]

a1_index 會(huì)成為:


[[1, 1], [2, 1], [1, 0], [2, 0], [1, 2], [0, 0], [2, 2], [3, 0], [4, 0]]


查看完整回答
反對(duì) 回復(fù) 2021-07-06
  • 2 回答
  • 0 關(guān)注
  • 180 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)