您好,我尝试使用此工具:
Startup.Configure
但是我得到这个结果:
app.Use((context, next) =>
{
context.Request.Scheme = "https";
return next();
});
我想得到这些结果:
list(combinations('01', 3))
另外,我也希望有不同的情况。
例如,给定[]
,我希望得到以下结果:
000
001
011
111
101
100
010
是否可以使用111
做这两件事?
答案 0 :(得分:0)
这是一个解决方案,部分使用了this answer中的解决方案。
def partition(collection):
if len(collection) == 1:
yield [ collection ]
return
first = collection[0]
for smaller in partition(collection[1:]):
# insert `first` in each of the subpartition's subsets
for n, subset in enumerate(smaller):
yield smaller[:n] + [[ first ] + subset] + smaller[n+1:]
# put `first` in its own subset
yield [ [ first ] ] + smaller
elements = list([1,1,1])
lst = list(dict.fromkeys([ tuple([sum(p[1][i]) for i in range(len(p[1]))]) for p in enumerate(partition(elements), 1) ]))
print(sorted(lst))
输出:
[(1, 1, 1), (1, 2), (2, 1), (3,)]
答案 1 :(得分:0)
您似乎在问两个独立的问题。根据您的结果:
000001011111101100010
通过permutations_with_replacement使用itertools.product
组合键。
111 12 21 3
通过partitions使用more_itertools.partitions
算法。
给出
import itertools as it
import more_itertools as mit
代码
# 1 - Permutation w Replacement
>>> list(it.product("01", repeat=3))
[('0', '0', '0'),
('0', '0', '1'),
('0', '1', '0'),
('0', '1', '1'),
('1', '0', '0'),
('1', '0', '1'),
('1', '1', '0'),
('1', '1', '1')]
# 2 - Partitions
>>> list(mit.partitions("111"))
[[['1', '1', '1']],
[['1'], ['1', '1']],
[['1', '1'], ['1']],
[['1'], ['1'], ['1']]]
详细信息
要获得特定的结果,请使用列表理解:
# 1
>>> ["".join(x) for x in it.product("01", repeat=3)]
['000', '001', '010', '011', '100', '101', '110', '111']
# 2
>>> [[sum(map(int, x)) for x in sub] for sub in mit.partitions("111")]
[[3], [1, 2], [2, 1], [1, 1, 1]]
more_itertools
是第三方软件包。使用> pip install more-itertools
安装。