[問題]迭代層數未知

看板Python作者 (感恩師傅)時間6年前 (2019/04/15 13:16), 6年前編輯推噓6(6013)
留言19則, 5人參與, 6年前最新討論串1/2 (看更多)
大家好, 最近遇到一個找最小set的問題,舉個例: A=[{1,2,3}, {4,5}] B=[{3,4,5}, {1,3,4}, {1,5}] A,B 列表內的set互相配對後, 找出長度最少的set有兩組: {3,4,5}, {1,4,5} 因此output為 [{3,4,5}, {1,4,5}] 若是以上的例子通常只要兩層for迴圈就寫出來了, 但現在列表的數量未知,可能有A,B,C,D.... 請教各位高手有沒有什麼比較好的解法 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.136.101.122 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1555305373.A.30C.html

04/15 13:20, 6年前 , 1F
只要最小的組合?
04/15 13:20, 1F

04/15 13:21, 6年前 , 2F
直接挑選出各自最小數量的?
04/15 13:21, 2F
行不通,舉個例: A=[{1,2,3}, {4,5}] B=[{1,2,3}, {6,7}] 找最小數量解是{4,5,6,7} 但長度最少set解是{1,2,3} ※ 編輯: keven92110 (223.136.101.122), 04/15/2019 13:26:15

04/15 13:31, 6年前 , 3F
瞭解意思,那A,B,C,D要兩兩做、還是要一起?
04/15 13:31, 3F
全部一起 ※ 編輯: keven92110 (223.136.101.122), 04/15/2019 13:46:28 其實我的問題主要是遇到未知的迭代層數該怎麼辦XD 因為現在input的list可能只有A,B 也可能有A,B,C,也可能A,B,C,D,E... ※ 編輯: keven92110 (223.136.101.122), 04/15/2019 13:56:43

04/15 14:40, 6年前 , 4F

04/15 14:41, 6年前 , 5F
用*做呢?
04/15 14:41, 5F

04/15 15:45, 6年前 , 6F

04/15 15:46, 6年前 , 7F
這樣如何
04/15 15:46, 7F

04/15 16:10, 6年前 , 8F
其實方法很多 重點只在於要把組合聯集的函數和取出最短
04/15 16:10, 8F

04/15 16:10, 6年前 , 9F
長度的函數分開 全部組合完再找最短就好了
04/15 16:10, 9F
感謝兩位高手解答,樓上的解法就是我想要的答案,上了一課! ※ 編輯: keven92110 (42.72.187.143), 04/15/2019 20:09:25

04/15 20:48, 6年前 , 10F
只有我看了幾次還看不懂要求嗎?
04/15 20:48, 10F

04/16 01:29, 6年前 , 11F
看不懂+1 (哈)
04/16 01:29, 11F

04/16 02:02, 6年前 , 12F
應該是: 求 i,j 使得 A[i]∪B[j] 有最少的元素
04/16 02:02, 12F

04/16 02:04, 6年前 , 13F
一般化,求 {i_k} 使得 ∪A_k[i_k] 有最少的元素
04/16 02:04, 13F

04/16 10:04, 6年前 , 14F
樓上,可是我就是搞不懂output 的 {1,4,5} 從哪來的,
04/16 10:04, 14F

04/16 10:04, 6年前 , 15F
明明 這從沒在 A 或 B 出現嘛...
04/16 10:04, 15F

04/16 10:19, 6年前 , 16F
"互相配對" -> set(setA元素和setB元素) 的意思啦
04/16 10:19, 16F

04/16 10:27, 6年前 , 17F
喔!互相配對原來是這意思!建議OP 下次直接說UNION
04/16 10:27, 17F

04/16 10:27, 6年前 , 18F
吧...
04/16 10:27, 18F

04/16 11:04, 6年前 , 19F
我看了 bibo 大的解釋才懂(哈)
04/16 11:04, 19F
文章代碼(AID): #1Sj1ETCC (Python)
文章代碼(AID): #1Sj1ETCC (Python)