( 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/