假設有乙個團隊技能的需求。
這類技能是要集齊所有指定的人就能啟用。
但是因為同乙個人又2種身份存在,比如楊戩/神楊戩,於是便產生了組合。
這種組合跟普通組合不一樣,普通組合可以隨意組合。而這種組合是每個人都必須選,遇2選1。
比如['楊戩/神楊戩','豬八戒']可組合成
['楊戩','豬八戒']
['神楊戩','豬八戒']
但不能組合成['楊戩','神楊戩'].
思路:
只有1種身份的人不會產生組合,是固定的,所以分開處理。
將對人的2選1組合轉換二進位制0和1的組合。
利用itertools.product(iterable, repeat)特性
下面上**
import itertools
group = ['楊戩/神楊戩','嫦娥','沉香/神沉香']
skill1 = [x for x in group if '/' not in x]
skill2 = [x.split('/') for x in group if '/' in x]
masks = list(itertools.product([0,1], repeat=len(skill2)))
result = [[s[mask[i]] for i,s in enumerate(skill2)]+skill1 for mask in masks]
import pprint
pprint.pprint(result)
輸出:[['楊戩', '沉香', '嫦娥'],
['楊戩', '神沉香', '嫦娥'],
['神楊戩', '沉香', '嫦娥'],
['神楊戩', '神沉香', '嫦娥']]
python 乙個詭異問題的解決
檔案上傳中,需要驗證銀行卡號,於是寫正則如下 regex r d 然後上傳到伺服器,結果re.match regex,file field 為none。在notpad 中驗證正則能夠match,又在python命令列中試了一下 import re re.match r d 6228410770613...
做乙個 有限制的登陸視窗
要求 布局大概是這個樣子。性別預設屬性為true 生日用的datatimepiker 民族是combobox 屬性dropdownstyle修改為dropdownlist 這是窗體 每個控制項的限制,和 事件 public partial class form1 form private void ...
python定義乙個 Python定義乙個類
在物件導向的世界裡,你的 通常稱為 類的方法 method,而資料通常稱為 類的屬性 attribute,例項化的資料物件通常稱為 例項 instance。python使用class建立類。每個定義的類都有乙個特殊的方法,名為 init 可以通過這個方法控制如何初始化物件。類中方法的定義與函式的定義...