gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 19:31:30 25 4
gpt4 key购买 nike

通常我知道我们可以做 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com