飄逸的python 解決乙個有限制的組合需求

2021-09-09 04:50:58 字數 899 閱讀 9610

假設有乙個團隊技能的需求。

這類技能是要集齊所有指定的人就能啟用。

但是因為同乙個人又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 可以通過這個方法控制如何初始化物件。類中方法的定義與函式的定義...