new*_*bie 2 python combinations python-3.x
我有任意数量的变量,每个变量可以取任意数量的有效值。例如。a-(a1,a2,a3),b-(b1,b2),c-(c1,c2,c3,c4,c5)。现在我想要下面的字典列表
[
{a:a1,b:b1,c:c1},
{a:a1,b:b1,c:c2},
{a:a1,b:b1,c:c3},
.
.
.
{a:a3,b:b2,c:c3}
]
Run Code Online (Sandbox Code Playgroud)
在上述情况下,总共3 * 2 * 5 = 30个组合。如何在python中创建它们。
我可以for为每个变量设置三个循环,如下所示
result_list = list()
for a_val in [a1,a2,a3]:
for b_val in [b1,b2]:
for c_val in [c1,c2,c3,c4,c5]:
result_list.append({a:a_val,b:b_val,c:c_val})
Run Code Online (Sandbox Code Playgroud)
但是变量的数量也有所不同。而不是3个变量,我想同时应用5个变量(a,b,c,d,e),依此类推。如何使用通用代码在python中实现
最简单的方法是itertools.product()。它使您可以用简单的单行代码创建所需的内容:
import itertools
a = [1,2,3]
b = [4,5]
c = [-1]
# result contains all possible combinations.
combinations = list(itertools.product(a,b,c))
Run Code Online (Sandbox Code Playgroud)
请注意,结果combinations变量本身是a list(可以转换为a set),而不同的元素tuples不是dicts。
我目前尚不清楚为什么您必须以类似dict的方式命名元素的确切原因,只要您知道元素在此处存储的顺序即可(在中是可预测的)itertools.product。
| 归档时间: |
|
| 查看次数: |
903 次 |
| 最近记录: |