两个for循环用于某些条件

时间:2014-02-19 13:17:05

标签: python for-loop tf-idf

我有两套

tf_ar=[0.0,0.032,0.235,0.65,0,....]  and
idf=[1.2,1.6,0.68,....]

我必须对idf和tf_ar进行乘法,以便idf中的每个项乘以tf_ar中的六个项。这意味着

(number of terms in tf_ar)= [6*(number of terms in idf)]

我应该如何为它提供条件,以便它继续循环tf_ar中的下六个术语?

j=0
for term in idf:
    i=0
    for tf in tf_ar:
        if i==6:
            break
        else:
            tf_idf+=str(float(tf)* idf[j])+','

    i+=1
tf_idf=tf_idf.strip()+'\n'
j+=1

例如:

tf_ar=[1,2,3,4,5,6,7,8,9,10,11,12...]
idf=[A,B,...]

我希望结果为

tf_idf=[1A,2A,3A,4A,5A,6A,7B,8B,9B,10B,11B,12B...]

我希望idf应该乘以tf_ar的六个术语,并且应该继续使用下一个术语。

2 个答案:

答案 0 :(得分:2)

似乎这样的事情可以帮到你:

[a * b for a in idf for b in tf_ar]

答案 1 :(得分:0)

这可能会给你一些想法,虽然我确定你的具体用例不是100%正确,因为你发布的代码有点不清楚。但是你应该能够根据自己的需要进行调整。

result = []
for ii, term in enumerate(idf):
    result.append(0)
        for tf in tf_ar[6*ii:6*(ii+1)]:
            result[-1] += term * tf

关键的想法是“枚举”以获得整数索引以与idf上的迭代一起进行,然后使用[{1}}的[x:y]制作“切片”,其宽度为6每个