Python,编写两个for循环之和的最佳方法

标签 python for-loop coding-style

通常我知道我们可以做 sum([func(x,x) for x in i]),但我有一个 if 检查和两个 for 循环,那么什么是最 pythonic 的方式编写下面的代码。你可以假设无论你给它什么类型,相似度都会返回一个数字。您还可以假设它实际上只会获取整数和字符。

x = 0
if isinstance(a, dict) or isinstance(a, list) or isinstance(a, tuple):
    for i in a:
        for j in b:
            x += similarity (i,j)

最佳答案

也许是这样的:

x=0
if isinstance(a,(dict,list,tuple)):
    x=sum(similarity(i,j) for i in a for j in b)

或者:

x=(sum(similarity(i,j) for i in a for j in b) if isinstance(a,(dict,list,tuple)) 
   else 0)

或者(假设字符串、集合或其他一些可迭代类型由于某种原因不会破坏您的函数):

try:
   x=sum(similarity(i,j) for i in a for j in b)
except TypeError:
   x=0

如果您特别希望测试某些东西是否可迭代,您可以这样做:

from collections import Iterable
if isinstance(e, Iterable):
   ...

如果有某些您不想要的可迭代类型,请对它们使用react:

if isinstance(e, Iterable) and not isinstance(el, str):
   # an iterable that is not a string...

关于Python,编写两个for循环之和的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16427663/

相关文章:

javascript - 我可以改进这个 AngularJS/AJAX javascript 片段吗?

java - 编码约定 - 命名枚举

javascript - 以特定间隔将图像插入 DOM

python - 解压嵌套列表

Python 决策树回归器

python - 马氏距离在 rpy2 和 scipy 之间不匹配

java - 在 Java 中将计数器重置为零?

C 编程 : Using struct Accessing an array within an array during a for loop

python - 如何在大型 python 代码库中用一个制表符替换四个空格?

python - 如何让 Django 的 urls.py 查看数据库并从中获取 url?这是个好主意吗?