小编Emm*_*Gee的帖子

更快的Python技术,可以从彼此倍数的数字列表中计算三元组

假设我们有一个数字列表,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个元素),所需的时间会增加太多.有没有更快/更好的方法来做到这一点?

python performance list-comprehension

15
推荐指数
1
解决办法
854
查看次数

标签 统计

list-comprehension ×1

performance ×1

python ×1