Pythonic 嵌套 for - Python 中的循环

标签 python python-3.x oop for-loop pytorch

我正在编写这段代码,其中嵌套了 for 循环。 a_listb_list是元组列表,其中每个元组由两个张量组成 [(tens1, tens2), ...] 。我正在尝试计算每个 tens1 的相似度在a_list给每个tens1b_list 。下面是我的代码。嵌套循环似乎是一个瓶颈。有没有更好的方法(pythonic)可以重写循环?

a2b= defaultdict(dict)
b2a= defaultdict(dict)
ab_sim = []

for a, vec_a in a_list:
    for b, vec_b in b_list:
        # Ignore combination if the first element in both a and b are same
        if a[0] == b[0]:
            continue
        # Calculate cosine similarity of combination
        sim = self.calculate_similarity(vec_a, vec_b )
        a2b[a][b] = sim
        b2a[b][a] = sim
        ab_sim.append(sim)

calculate_similarity只是一种计算余弦相似度的方法。 a_listb_list可以是任何大小。我有b2aa2b因为我需要它们进行其他计算。

最佳答案

您可以使用字典理解:

a2b = {a: {b: self.calculate_similarity(vec_a, vec_b )
       for (b, vec_b) in b_list if a[0] != b[0]} for (a, vec_a) in a_list}

关于Pythonic 嵌套 for - Python 中的循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60378598/

相关文章:

python - 创建具有理解力的字典?

python - 访问并不总是存在于多个词典中的 key

python - 如何创建具有复杂逻辑的自定义排序功能?

java - 安排服务器组件鸭子

python - 静态文件 : No such file or directory error in Django 1. 4

python - 在多个 python 模块中使用相同的数组

python - 即使字典键中存在属性,getattr 也会返回默认值

python - 如何拆分列表元素并根据空格分隔符替换它们?

python-3.x - 如何消除 import IPython.nbformat : "UserWarning: nbformat.current is deprecated." 的警告

javascript - 类枚举 setter ,约定 javascript