内容的栏目 * @param int $category 0列表 1频道 2单页 3外链 * @return array */ function category_list($forumlist, $model = 0, $display = 0, $category = 0) { if (empty($forumlist)) return NULL; static $cache = array(); $key = $model . '-' . $display . '-' . $category; if (isset($cache[$key])) return $cache[$key]; if ($display) { foreach ($forumlist as $k => $val) { if (1 == $val['display'] && 1 == $val['type'] && $val['category'] == $category) { $cache[$key][$k] = $val; } } } else { foreach ($forumlist as $k => $val) { if (1 == $val['type'] && $val['category'] == $category) { $cache[$key][$k] = $val; } } } return empty($cache[$key]) ? NULL : $cache[$key]; } /** * @param $forumlist 所有版块列表 不分模型 * @param int $display 0全部CMS栏目 1在首页和频道显示内容的栏目 * @param int $category 0列表 1频道 2单页 3外链 * @return array */ function category_list_show($forumlist, $display = 0, $category = 0) { if (empty($forumlist)) return NULL; static $cache = array(); $key = $display . '-' . $category; if (isset($cache[$key])) return $cache[$key]; if ($display) { foreach ($forumlist as $k => $val) { if (1 == $val['display'] && 1 == $val['type'] && $val['category'] == $category) { $cache[$key][$k] = $val; } } } else { foreach ($forumlist as $k => $val) { if (1 == $val['type'] && $val['category'] == $category) { $cache[$key][$k] = $val; } } } return empty($cache[$key]) ? NULL : $cache[$key]; } /** * @param $forumlist 所有版块列表 * @return mixed BBS栏目数据(仅列表) 尚未开放bbs频道功能 */ function forum_list($forumlist) { if (empty($forumlist)) return array(); static $cache = array(); if (isset($cache['bbs_forum_list'])) return $cache['bbs_forum_list']; $cache['bbs_forum_list'] = array(); foreach ($forumlist as $_fid => $_forum) { if ($_forum['type']) continue; $cache['bbs_forum_list'][$_fid] = $_forum; } return $cache['bbs_forum_list']; } // 导航显示的版块 function nav_list($forumlist) { if (empty($forumlist)) return NULL; static $cache = array(); if (isset($cache['nav_list'])) return $cache['nav_list']; foreach ($forumlist as $fid => $forum) { if (0 == $forum['nav_display']) { unset($forumlist[$fid]); } } return $cache['nav_list'] = $forumlist; } ?>python - All possible decision pathsoutcomes given multiple choices at each decision - Stack Overflow
最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

python - All possible decision pathsoutcomes given multiple choices at each decision - Stack Overflow

programmeradmin0浏览0评论

Given I am iterating through multiple lists of elements that are zipped together, I need to create all possible outcomes given I can only choose an element from a single list at each iteration.

Example input 1:

a = [3,19,13]
b = [20,18,7]

Example output 1:

[[3, 19, 13], [3, 19, 7], [3, 18, 13], [3, 18, 7], [20, 19, 13], [20, 19, 7], [20, 18, 13], [20, 18, 7]]

Example input 2:

a = ['A','B']
b = ['C','D']

Example output 2:

[['A', 'B'], ['A', 'D'], ['C', 'B'], ['C', 'D']]

I'm struggling to find the right mathematical terminology to define exactly what I am asking for. I do not think permutations, combinations, or cartesian product are correct or precise enough.

Given I am iterating through multiple lists of elements that are zipped together, I need to create all possible outcomes given I can only choose an element from a single list at each iteration.

Example input 1:

a = [3,19,13]
b = [20,18,7]

Example output 1:

[[3, 19, 13], [3, 19, 7], [3, 18, 13], [3, 18, 7], [20, 19, 13], [20, 19, 7], [20, 18, 13], [20, 18, 7]]

Example input 2:

a = ['A','B']
b = ['C','D']

Example output 2:

[['A', 'B'], ['A', 'D'], ['C', 'B'], ['C', 'D']]

I'm struggling to find the right mathematical terminology to define exactly what I am asking for. I do not think permutations, combinations, or cartesian product are correct or precise enough.

Share Improve this question asked Feb 2 at 2:38 Matthew ThomasMatthew Thomas 86113 silver badges18 bronze badges 0
Add a comment  | 

1 Answer 1

Reset to default 2

You can compute this by taking the product of the sets of the n'th terms of the list. Each set will contain all the choices for the n'th element of the new list, so the product of all the sets will be all the possible combinations of those choices.

Implementation-wise, you can use zip to gather the "sets" into lists and itertools.product to multiply the albums setlists sets/lists.

import itertools

def get_paths(*iterables):
    return list(itertools.product(*zip(*iterables)))

a = [3,19,13]
b = [20,18,7]

print(get_paths(a, b))

a = ['A','B']
b = ['C','D']

print(get_paths(a, b))
发布评论

评论列表(0)

  1. 暂无评论