Python:从返回单个项目或另一个列表的函数创建列表

标签 python list

( python 3.5)。

问题陈述:给定一个返回一个项目或项目列表的函数,是否有单行语句可以根据调用上述函数的结果初始化一个新列表?

详细信息:我查看了 python 列表上的文档,并在 repl 上尝试了一些东西,但我似乎无法弄清楚这一点。

我正在调用读取 xml 文档的第三方函数。该函数有时会返回一个列表,有时会返回单个项目(取决于存在多少 xml 条目)。

出于我的目的,我总是需要一个可以迭代的列表 - 即使它的长度为 1。下面的代码正确地完成了我想要的。然而,鉴于 Python 的优雅,它似乎很笨重。我怀疑有一种单线的方法可以做到这一点。

def force_list(item_or_list):
    """
    Returns a list from either an item or a list.
    :param item_or_list: Either a single object, or a list of objects
    :return: A list of objects, potentially with a length of 1.
    """
    if item_or_list is None: return None
    _new_list = []
    if isinstance(item_or_list, list):
        _new_list.extend(item_or_list)
    else:
        _new_list.append(item_or_list)
    return _new_list

提前致谢, 史蒂夫杰

最佳答案

如果您正在寻找有关列出函数调用结果的单行代码:

假设有一个名为 func 的函数返回一个项目或项目列表:

elem = func()
answer = elem if isinstance(elem, list) else [elem]

也就是说,你真的应该重构 func 来返回一种类型的东西——让它返回一个包含许多元素的列表,或者在它只返回一个元素的情况下,让它返回一个列出该元素。因此你可以避免这种类型检查

关于Python:从返回单个项目或另一个列表的函数创建列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39375420/

相关文章:

python - 是否可以将 python gdb 变量捕获到值历史记录中?

list - 如何在 Scala 中合并两种类型的 for 推导式?

python : Clean and efficient way to remove items that are not convertable to int from list

Java:在嵌套列表中匹配列表

python - Django:使用管理上下文扩展基于类的 View 的上下文

python - 在 Cloud Run 实例中访问和使用 Cloud Storage 中的 csv 文件

python - 如何在kubernetes集群中使用作业队列

python - 保留所有空格作为标记

python - 如何在不完全破坏性能的情况下修改 Numba 中的列表?

c - 在动态内存分配器中保存已释放 block 列表时,使用 LIFO 顺序还是 FIFO 顺序更好?