我有一个列表,最多可包含4个变量。我想要实现的是结合以下步进的所有组合来计算每个组合的列表总长度。我想把这个组合与长度一起编写。下面的每个变量只能在列表中出现一次,但变量名为" James"可以出现不止一次。变量是:
所以,我想循环将变量添加到我的列表中,计算长度,然后再次使用下一个组合。
我很高兴如何生成bt_enable.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent discoverableIntent = new
Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
discoverableIntent.putExtra( BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION,300);
startActivity(discoverableIntent);
}
});
,但我只想知道生成不同组合的最佳方法是什么?所以它将如下所示: -
(len(my_list)
我只是不确定如何遍历6个名称并创建所有可能的组合来填充列表。
如果有人能指出我正确的方向,我不是在寻找解决方案,而是更多如何执行此迭代功能。
全部谢谢
答案 0 :(得分:4)
此问题已设置为itertools
,例如:
In []:
import itertools as it
n = 4
choices = ['James']*n + ['Pauline', 'Sarah', 'Benedict', 'Phillippa', 'John']
list(it.combinations(choices, r=n))
Out[]:
[('James', 'James', 'James', 'James'),
('James', 'James', 'James', 'Pauline'),
('James', 'James', 'James', 'Sarah'),
('James', 'James', 'James', 'Benedict'),
...
('Pauline', 'Sarah', 'Benedict', 'John'),
('Pauline', 'Sarah', 'Phillippa', 'John'),
('Pauline', 'Benedict', 'Phillippa', 'John'),
('Sarah', 'Benedict', 'Phillippa', 'John')]
但是从你的例子中很难说,你可能正在寻找permutations
:
In []:
list(it.permutations(choices, r=n))
Out[]:
[('James', 'James', 'James', 'James'),
('James', 'James', 'James', 'Pauline'),
('James', 'James', 'James', 'Sarah'),
('James', 'James', 'James', 'Benedict'),
...
('James', 'John', 'Benedict', 'James'),
('James', 'John', 'Benedict', 'James'),
('James', 'John', 'Benedict', 'James'),
('James', 'John', 'Benedict', 'Pauline'),
...]