我正在寻找一种方法,可以直接访问列表中的元素。例如,以下是获取四个集合的笛卡尔积的常规方法。
>>> list(itertools.product((0,1), (0,1),(0,1),(0,1)))
[(0, 0, 0, 0), (0, 0, 0, 1), (0, 0, 1, 0), (0, 0, 1, 1), (0, 1, 0, 0), (0, 1, 0, 1), (0, 1, 1, 0), (0, 1, 1, 1), (1, 0, 0, 0), (1, 0, 0, 1), (1, 0, 1, 0), (1, 0, 1, 1), (1, 1, 0, 0), (1, 1, 0, 1), (1, 1, 1, 0), (1, 1, 1, 1)]
但在这种情况下,四组是相同的,反复输入很快变得枯燥乏味,这时候可以考虑这样做:
>>> list(itertools.product([(0,1)]*4)
当然,它不起作用,因为itertools.product函数会将其视为一个集合而不是四个集合。所以,问题是,有没有一种方法可以做到这一点:
>>> list(itertools.product(delist([(0,1)]*4))