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

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

蟒蛇在兩個名單上。從每個列表中獲取大于 1 的值

蟒蛇在兩個名單上。從每個列表中獲取大于 1 的值

慕姐8265434 2022-09-20 15:30:57
我有下面的代碼。此代碼給出了 list1 和 list2 之間的所有可能組合。import itertools list1 = [1,2,3,4,5] list2 = [6,7,8,9,10]print(list(itertools.product(list1, list2))) Output: [(1, 6), (1, 7), (1, 8), (1, 9), (1, 10), (2, 6), (2, 7), (2, 8), (2, 9), (2, 10), (3, 6), (3, 7), (3, 8), (3, 9), (3, 10), (4, 6), (4, 7), (4, 8), (4, 9), (4, 10), (5, 6), (5, 7), (5, 8), (5, 9), (5, 10)]我想要的是從list1中獲取2個值的所有可能組合,并從list2中獲取3個值(沒有重復項)。因此,可能的輸出應如下所示。我該怎么做?[(1,2,6,7,8), (1,2,7,8,9), (1,2,8,9,10), (2,3,6,7,8), and so on.......]
查看完整描述

2 回答

?
蝴蝶刀刀

TA貢獻1801條經驗 獲得超8個贊

以下操作即可:


from itertools import combinations as com, product as prod


list1 = [1, 2, 3, 4, 5]

list2 = [6, 7, 8, 9, 10]


[c1 + c2 for c1, c2 in prod(com(list1, 2), com(list2, 3))]


# [(1, 2, 6, 7, 8), 

#  (1, 2, 6, 7, 9), 

#  (1, 2, 6, 7, 10),

#  ...

#  (4, 5, 7, 9, 10), 

#  (4, 5, 8, 9, 10)]

這使得兩個列表中的相應組合的笛卡爾積,并簡單地連接每對以避免嵌套元組。


查看完整回答
反對 回復 2022-09-20
?
翻翻過去那場雪

TA貢獻2065條經驗 獲得超14個贊

你需要先構建每個列表需要的組合,然后做產品,你還需要加入產品的內部結果((1, 2), (6, 7, 8)) => (1, 2, 6, 7, 8)


list1 = [1, 2, 3, 4, 5]

list2 = [6, 7, 8, 9, 10]


c1 = combinations(list1, r=2)

c2 = combinations(list2, r=3)


print(list(map(lambda x: tuple(chain(*x)), product(c1, c2)))) # [(1, 2, 6, 7, 8), (1, 2, 6, 7, 9), (1, 2, 6, 7, 10), (1, 2, 6, 8, 9), (1, 2, 6, 8, 10), (1, 2, 6, 9, 10), (1, 2, 7


查看完整回答
反對 回復 2022-09-20
  • 2 回答
  • 0 關注
  • 112 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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