在使用Python中尽可能少的行抓取第一个元素之前,是否可以检查列表是否为空?

时间:2010-11-21 10:39:54

标签: python

我一直在我的python代码中执行此操作。我愿意打赌有一种更容易(也就是一线)的方式来做到这一点。

results = getResults()
if len(results) > 0:
    result = results[0]

我其他地方实际上并不需要“结果”,而且我应该只运行一次“getResults”。

有什么想法吗?

5 个答案:

答案 0 :(得分:8)

如果result为空,您还没有指定results应该是什么,但这是一个选项(假设Python 2.6或更高版本):

result = results[0] if results else None

答案 1 :(得分:2)

result = len(results) and results[0] or None。如果结果[0]不是0,或False,或任何空容器[], (), '', {}, set(), ...

答案 2 :(得分:1)

Python 2.6的

next(iter(getResults()), None)

答案 3 :(得分:0)

如果你实际上并不需要results,请考虑一个只返回第一个结果的函数,然后使用它。

def getFirstResult():
    results = getResults()
    if len(results) > 0:
        return results[0]
    else:
        return None

答案 4 :(得分:0)

如果您可以沿着这些方向略微更改getResults()

def getResults():
    # ...
    getResults.seq = ... # save results in a func attribute
    return getResults.seq

它可以让你写:

results = getResults.seq[0] if getResults() else None