繁体   English   中英

如何将每个列表的每个元素与所有其他元素进行比较?

[英]How to compare every element of every list to all the other elements?

我使用了下面的代码,但我知道它的计算效率不高,而且我知道每一对应该只比较一次,并且每次迭代的比较次数应该更少

Full_book_Dwt_diff=[]

for page_number in range(len(Full_book_DWT)):
    compared_page_DWT=[]
    for i in range(len(Full_book_DWT[page_number])):
        DWT_diff_per_word=[]

        for sub in range(len(Full_book_DWT)):
            
            for j in range(len(Full_book_DWT[sub])):
                
                Diff=np.absolute(Full_book_DWT[page_number][i]-Full_book_DWT[sub][j])
                size=Diff.size
                DWT_diff_per_word.append(((np.sum(Diff)/size),i,sub,j))
        DWT_diff_per_word.sort(key=lambda x: x[0])
        compared_page_DWT.append(DWT_diff_per_word)
    Full_book_Dwt_diff.append(compared_page_DWT)

page_number+1开始内部循环,这样您就不会两次比较相同的元素。

Full_book_Dwt_diff = []

for page_number, page in enumerate(Full_book_DWT):
    compared_page_DWT = []
    for i, word in enumerate(page):
        DWT_diff_per_word = []
        for page_number2, page2 in enumerate(Full_book_DWT[page_number+1:], page_number+1):
            for j, word2 in enumerate(page2):
                Diff = np.absolute(word, word2)
                size = Diff.size
                DWT_diff_per_word.append(((np.sum(Diff)/size),i,page_number2,j))
        DWT_diff_per_word.sort(key=lambda x: x[0])
        compared_page_DWT.append(DWT_diff_per_word)
    Full_book_Dwt_diff.append(compared_page_DWT)

我想我解释错了,但这个解决方案对我来说效果最好

word_counter=np.zeros((len(Full_book_DWT), 1))
page_counter=0
pairs=[]

for page_number in range(len(Full_book_DWT)):
    page_counter+=1
    
    for i in range(len(Full_book_DWT[page_number])):
        word_counter[page_number]+=1
        
        for sub in range(page_counter,len(Full_book_DWT)):
            
            for j in range(int(word_counter[page_number]),len(Full_book_DWT[sub])):
                
                Diff=np.absolute(Full_book_DWT[page_number][i]
                                 -Full_book_DWT[sub][j])
                size=Diff.size
                pairs.append((page_number,i,sub,j,(np.sum(Diff)/size)))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM