gpt4 book ai didi

python - 迭代可能是迭代器或单个元素的东西

转载 作者:行者123 更新时间:2023-11-28 21:47:17 24 4
gpt4 key购买 nike

假设我有以下功能:

def sum(summands)
s = 0
for a in summands:
s = a + s

用户可能会用列表调用它 sum([1, 2, 3]) 但如果你也可以直接用数字调用它会很方便 sum(5) 。 (这实际上与数字无关,只是一个简化的示例。)

我可以发明一个函数:

def make_iterable(x):
# returns x if x is iterable, returns [x] if x is not iterable

但是是否有更短的内置方法使单个元素可迭代?

最佳答案

这个怎么样。

def sum(summands)
s = 0

try:
iter(summands)
except TypeError:
return summands

for a in summands:
s = a + s
return s

或者,如果您想使用您建议的 shell 函数,您可以将 try: except: 提取到 make_iterable

python 2.x:

def make_iterable(x):
try:
iter(x)
except TypeError:
x=[x]
return x

Python 3.x:

def make_iterable(x):
try: yield from x
except TypeError: yield x

然后求和

def sum(summands)
s = 0

summands = make_iterable(summands)

for a in summands:
s = a + s
return s

关于python - 迭代可能是迭代器或单个元素的东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36750167/

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