具有特定模式的元组列表



有没有一种方法可以创建具有特定模式的元组列表?我想在不需要手动编写所有列表的情况下获得以下列表,我认为它可能是";"容易";因为元组列表中有一种模式,但不确定如何做到。

a = [
[(30, 5, 10),
(30, 5, 20),
(30, 5, 30),
(30, 10, 10),
(30, 10, 20),
(30, 10, 30),
(30, 20, 10),
(30, 20, 20),
(30, 20, 30)],
[(35, 5, 10),
(35, 5, 20),
(35, 5, 30),
(35, 10, 10),
(35, 10, 20),
(35, 10, 30),
(35, 20, 10),
(35, 20, 20),
(35, 20, 30)],
[(40, 5, 10),
(40, 5, 20),
(40, 5, 30),
(40, 10, 10),
(40, 10, 20),
(40, 10, 30),
(40, 20, 10),
(40, 20, 20),
(40, 20, 30)]
]
a

输出:

[[(30, 5, 10),
(30, 5, 20),
(30, 5, 30),
(30, 10, 10),
(30, 10, 20),
(30, 10, 30),
(30, 20, 10),
(30, 20, 20),
(30, 20, 30)],
[(35, 5, 10),
(35, 5, 20),
(35, 5, 30),
(35, 10, 10),
(35, 10, 20),
(35, 10, 30),
(35, 20, 10),
(35, 20, 20),
(35, 20, 30)],
[(40, 5, 10),
(40, 5, 20),
(40, 5, 30),
(40, 10, 10),
(40, 10, 20),
(40, 10, 30),
(40, 20, 10),
(40, 20, 20),
(40, 20, 30)]]

您可以尝试以下列表综合:

l1 =[30,35,40]
l2 =[5,10,20]
l3= [10,20,30] 
l =  [[(i1,i2,i3) for i2 in l2 for i3 in l3 ]for i1 in l1]

如果您想添加数字,只需将其添加到内部元组(例如,10(:

l =  [[(10,i1,i2,i3) for i2 in l2 for i3 in l3 ]for i1 in l1]

是,使用范围函数,带步骤。

范围(开始、停止、步进(

一种简单的方法如下:

array = []
for x in range(30, 45, 5):
y_tuple_multipler = 1
sub_array = []
for y in range(1, 4):
y_tuple = 5 * y_tuple_multipler
for z in range(10, 40, 10):
sub_array.append((x, y_tuple, z))
y_tuple_multipler *= 2
array.append(sub_array)
print(array)

您可能会得到更多的pythonic,但简单性总是很好的(并且更容易调试多个循环(

最新更新