【发布时间】:2020-06-23 13:04:18
【问题描述】:
我有一个包含['a', 'bill', 'smith'] 的列表,我想编写一个python 代码,以获得应用某个标准的所有可能组合。更准确地说,如果该元素尚未出现在输出列表中,我想获得列表中这三个元素的组合加上每个元素的第一个字母。例如,给定列表['a', 'bill', 'smith'],预期输出的一部分将是:['a', 'bill', 'smith'], ['bill', 'smith'], ['a', 'smith'],但同样,['a', 'b, 'smith'], ['bill, 's'], ['a', 's']。我不希望得到像这样的输出['s', 'bill, 'smith'],因为第一个元素(s)已经被第三个元素('smith')考虑在内。有人可以帮我吗?
这是我到目前为止所做的:
mapping = dict(enumerate(['a', 'bill', 'smith']))
for i in mapping.items():
if len(i[1])>1:
mapping[i[0]] = [i[1], i[1][0]]
else:
mapping[i[0]] = [i[1]]
print(mapping)
{0: ['a'], 1: ['bill', 'b'], 2: ['william', 'w'], 3: ['stein', 's']}
我现在卡住了。我想使用 itertools 库来迭代 dict 值以创建所有可能的组合。
提前致谢:)
【问题讨论】:
-
用标准的
itertools工具简单地生成所有组合然后过滤掉您的标准认为多余的元素是否不可行? -
那么......如何说一个标准对于python来说是多余的?无论如何谢谢:) 但@schwobaseggl 解决了它
标签: python python-3.x combinations itertools