假设我们有一个数字列表,l.我需要计算所有长度为3的元组l,(l_i,l_j,l_k)这样l_i均匀分割l_j,并l_j均匀分割l_k.规定指数i,j,k有关系i<j<k
即;
如果l=[1,2,3,4,5,6],那么元组将是[1,2,6], [1,3,6],[1,2,4],所以COUNT它将是3.
如果l=[1,1,1],那么唯一的元组就是[1,1,1],所以COUNT它将是1.
这是我到目前为止所做的,使用列表推导:
def myCOUNT(l):
newlist=[[x,y,z] for x in l for y in l for z in l if (z%y==0 and y%x==0 and l.index(x)<l.index(y) and l.index(y)<l.index(z))]
return len(newlist)
>>>l=[1,2,3,4,5,6]
>>>myCOUNT(l)
3
Run Code Online (Sandbox Code Playgroud)
这样可行,但随着l时间的延长(并且可能长达2000个元素),所需的时间会增加太多.有没有更快/更好的方法来做到这一点?