python實現三個或三個以上列表之間元素相互組合

2021-10-01 13:04:09 字數 3600 閱讀 4839

先說需求:

需求主要就是:如下可見

不同的條件對應不同的值,我需要做的就是將所有的條件用python進行組合。

將所有看作是乙個字典,每乙個key對應乙個情況1,情況1中還有不同的條件,例如審核狀態為情況1,審核狀態中還存在這已審核,未審核等。。。

**如下:

from itertools import combinations

from functools import reduce

list1 = ['已通過','未審核','已廢棄','已完結','以刪除']

list2 = ['話題','**','案例','文章']

list3 = ['0分','1分','2分']

dict =

lists=

def suiji(num):

for key in combinations(dict.keys(), num):

for i in key:

# print(lists)

code = ','

fn = lambda x, code=',': reduce(lambda x, y: [str(i) + code + str(j) for i in x for j in y], x)

print(fn(lists, code))

lists.clear()

print('------------end----------')

if __name__ == '__main__':

suiji(2)

執行結果為:

/users/dongyue/desktop/code/venv/bin/python /users/dongyue/desktop/code/learn/篩選隨機組合.py

*****列表組合情況***** [['已通過', '未審核', '已廢棄', '已完結', '以刪除'], ['話題', '**', '案例', '文章']]

['已通過,話題', '已通過,**', '已通過,案例', '已通過,文章', '未審核,話題', '未審核,**', '未審核,案例', '未審核,文章', '已廢棄,話題', '已廢棄,**', '已廢棄,案例', '已廢棄,文章', '已完結,話題', '已完結,**', '已完結,案例', '已完結,文章', '以刪除,話題', '以刪除,**', '以刪除,案例', '以刪除,文章']

------------end----------

*****列表組合情況***** [['已通過', '未審核', '已廢棄', '已完結', '以刪除'], ['0分', '1分', '2分']]

['已通過,0分', '已通過,1分', '已通過,2分', '未審核,0分', '未審核,1分', '未審核,2分', '已廢棄,0分', '已廢棄,1分', '已廢棄,2分', '已完結,0分', '已完結,1分', '已完結,2分', '以刪除,0分', '以刪除,1分', '以刪除,2分']

------------end----------

*****列表組合情況***** [['話題', '**', '案例', '文章'], ['0分', '1分', '2分']]

['話題,0分', '話題,1分', '話題,2分', '**,0分', '**,1分', '**,2分', '案例,0分', '案例,1分', '案例,2分', '文章,0分', '文章,1分', '文章,2分']

------------end----------

process finished with exit code 0

/users/dongyue/desktop/code/venv/bin/python /users/dongyue/desktop/code/learn/篩選隨機組合.py

['已通過,話題', '已通過,**', '已通過,案例', '已通過,文章', '未審核,話題', '未審核,**', '未審核,案例', '未審核,文章', '已廢棄,話題', '已廢棄,**', '已廢棄,案例', '已廢棄,文章', '已完結,話題', '已完結,**', '已完結,案例', '已完結,文章', '以刪除,話題', '以刪除,**', '以刪除,案例', '以刪除,文章']

------------end----------

['已通過,0分', '已通過,1分', '已通過,2分', '未審核,0分', '未審核,1分', '未審核,2分', '已廢棄,0分', '已廢棄,1分', '已廢棄,2分', '已完結,0分', '已完結,1分', '已完結,2分', '以刪除,0分', '以刪除,1分', '以刪除,2分']

------------end----------

['話題,0分', '話題,1分', '話題,2分', '**,0分', '**,1分', '**,2分', '案例,0分', '案例,1分', '案例,2分', '文章,0分', '文章,1分', '文章,2分']

------------end----------

process finished with exit code 0

先將字典中的key就行2個為一組的隨機組合,再將該key對應的列表中情況就行隨機組合。

當其中num=3的時候,字典組合只有一種情況:

/users/dongyue/desktop/code/venv/bin/python /users/dongyue/desktop/code/learn/篩選隨機組合.py

['已通過,話題,0分', '已通過,話題,1分', '已通過,話題,2分', '已通過,**,0分', '已通過,**,1分', '已通過,**,2分', '已通過,案例,0分', '已通過,案例,1分', '已通過,案例,2分', '已通過,文章,0分', '已通過,文章,1分', '已通過,文章,2分', '未審核,話題,0分', '未審核,話題,1分', '未審核,話題,2分', '未審核,**,0分', '未審核,**,1分', '未審核,**,2分', '未審核,案例,0分', '未審核,案例,1分', '未審核,案例,2分', '未審核,文章,0分', '未審核,文章,1分', '未審核,文章,2分', '已廢棄,話題,0分', '已廢棄,話題,1分', '已廢棄,話題,2分', '已廢棄,**,0分', '已廢棄,**,1分', '已廢棄,**,2分', '已廢棄,案例,0分', '已廢棄,案例,1分', '已廢棄,案例,2分', '已廢棄,文章,0分', '已廢棄,文章,1分', '已廢棄,文章,2分', '已完結,話題,0分', '已完結,話題,1分', '已完結,話題,2分', '已完結,**,0分', '已完結,**,1分', '已完結,**,2分', '已完結,案例,0分', '已完結,案例,1分', '已完結,案例,2分', '已完結,文章,0分', '已完結,文章,1分', '已完結,文章,2分', '以刪除,話題,0分', '以刪除,話題,1分', '以刪除,話題,2分', '以刪除,**,0分', '以刪除,**,1分', '以刪除,**,2分', '以刪除,案例,0分', '以刪除,案例,1分', '以刪除,案例,2分', '以刪除,文章,0分', '以刪除,文章,1分', '以刪除,文章,2分']

------------end----------

process finished with exit code 0

JAVA基礎(多執行緒三個或三個以上間的執行緒通訊)

1,多個執行緒通訊的問題 public class demo2 notifyall catch interruptedexception e start new thread catch interruptedexception e start new thread catch interrupte...

Java多執行緒 52 三個和三個以上執行緒之間的通訊

前面一篇介紹了兩個執行緒之間的通訊,那麼三個執行緒和三個以上執行緒之間的通訊是如何實現呢。我們前面一篇在查詢object類的時候,知道有乙個wait 和notify 方法,同時還有乙個notifyall 方法。這個notfiyall 方法就是來解決三個以上執行緒通訊的。1.基於前面知識,新增乙個執行...

python三個單引號

以前寫注釋的時候常用三個單引號,最近工作經常要寫多行的sql,特別是在pymysql中如果使用單引號,轉義將極其麻煩 看兩個栗子 pymysql單引號 select from tmp table where tmp type in a b c 當sql到幾十行,裡面混雜模糊查詢 正則時就很麻煩了 而...