itertools.combinations
的文档状态:
组合按字典顺序排序。因此,如果对输入 iterable 进行排序,则将按排序顺序生成组合元组。
元素是根据元素的位置而不是它们的值来对待的。因此,如果输入元素是唯一的,则每个组合中都不会有重复的值。
[重点突出]
这里到底能提供什么保证?经验检查表明元素总是像被
发出一样for i in range(len(iterable)):
for j in range(i + 1, len(iterable)):
for k in range(j + 1, len(iterable)):
...
yield iterable[i], iterable[j], iterable[k], ...
在这种情况下,“词典序”是什么意思?特别是,我认为强调的句子很关键,但我并不是这种联系的100%。我认为意味着将字典顺序应用于元素的索引,而不管其值如何,但我希望有人确认这一点。
答案 0 :(得分:10)
要将这些段落从计算机科学翻译成英文:
组合按字典顺序排序。因此,如果对可迭代输入进行排序,则将按排序顺序生成组合元组。
“词典”在这里是一个数学术语,并非按字母顺序表示,而是“按词典定义的任何顺序”。
17世纪初期:现代拉丁语,来自希腊语 lexikon(biblion)'单词(书)',来自 lexis 'word',来自 legein < / em>“说话”。
这里的“词典”是您的输入。简而言之,您的输入定义了生成输出的顺序。如果要按字母顺序对输出进行排序,请对输入进行排序。
根据元素的位置而不是其值将元素视为唯一。因此,如果输入元素是唯一的,则每个组合中将没有重复值。
这只是说combinations
不会查看或关心实际值本身,它只是根据元素的位置组合元素。它不会基于值进行重复数据删除,而是对位置组合进行重复数据删除。如果您想要唯一的组合,请对输入内容进行重复数据删除。