Python:如果项目不是列表,那么将项目作为列表的最pythonic方法是什么

时间:2016-07-13 17:59:10

标签: python-2.7

def ensure_list(papers):
    if type(papers) is not list:
        papers = [papers]
    return papers

papers = 1
try:
    papers.append(7)
except:
    print "not a list"
papers = ensure_list(papers)
papers.append(5)
for item in papers:
    print item

这个问题是询问检查和更改变量的最佳方法是什么,如果不是。 有没有更好的方法将论文作为第一个元素的列表?我正在编写一些可能被赋予对象或对象列表的代码,如果它是一个对象,我希望将它附加到列表然后进行处理。

这只做了一次所以看起来像是过度杀戮有一个单独的功能。

编辑: 元素将始终是已知类型(自定义类),并始终是自定义类型对象或自定义类型对象的列表。

答案如下:(谢谢Random832

 papers if isinstance(papers, list) else [papers]

Edit2:这不是另一个问题的重复,因为这不是在询问如何检查某些内容是否为列表。这个问题是询问检查和更改变量的最佳方法是什么,如果不是。这适用于我们真正喜欢的任何类型,一般的答案是内联isinstance。这个具体问题的答案是Random832提供的内联声明,其他问题是列出的。请在标记之前阅读并理解该问题。

1 个答案:

答案 0 :(得分:0)

这里有内联:(谢谢Random832

 papers if isinstance(papers, list) else [papers]

最好的办法是(重新)设计(部分)你的程序,以便以前的函数返回你需要的类型。 (谢谢你tenwest