gpt4 book ai didi

python - 将不可迭代对象传递给 list.extend ()

转载 作者:太空宇宙 更新时间:2023-11-03 12:15:40 24 4
gpt4 key购买 nike

我正在创建一个公共(public)方法以允许调用者将值写入设备,例如将其称为 write_vals()。

由于这些值将被实时输入,我想通过允许他们输入列表或单个值来简化用户的生活,这取决于他们需要写入多少个值。例如:

write_to_device([1,2,3])

write_to_device(1)

我的函数想要处理一个平面列表,所以我尝试变得聪明并编写如下代码:

input_list = []  
input_list.extend( input_val )

当用户输入一个列表时,这可以流畅地工作,但当用户输入一个整数时就惨败了:

TypeError: 'int' 对象不可迭代

使用 list.append() 会在传入列表时创建嵌套列表,这会带来额外的扁平化麻烦。

检查传入对象的类型似乎很笨拙且非 pythonic,希望 list.extend() 接受不可迭代对象让我无处可去。尝试各种其他编码方法也是如此。

建议(请仅与编码相关)将不胜感激。

最佳答案

您可以检查传递的参数是否是带有 isinstance() 的列表功能。

更好的解决方案可能是支持可变数量的参数:

def write_to_device(*args):
# |args| is now a list of all the arguments given to the function
input_list.extend(args)

这样即使不必将它们显式指定为列表,也可以将多个值赋予函数:

write_to_device(1)
write_to_device(1,2,3)

关于python - 将不可迭代对象传递给 list.extend (),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2588312/

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