如何处理空列表,python3

时间:2015-02-26 10:30:41

标签: python function if-statement python-3.x

我有一个创建氨基酸列表(aaCandidates)的函数,但这个列表甚至可以为空。如果此列表为空,我想跳过该步骤并继续执行以下步骤。

我的代码是:

def magicfunction(referenceDistance,referenceAA):

    amminoacids = ('A', 'R', 'N', 'D', 'C', 'Q', 'E', 'G', 'H', 'I', 'L', 'K', 'M', 'F', 'P', 'S', 'T', 'W', 'Y', 'V')
    aaCandidates = list()
    for aa in amminoacids:
        if distance(aa,referenceAA) == referenceDistance:
            aaCandidates.append(aa)
        if not aaCandidates:
            break

    luckyAA = choice(aaCandidates)

    return(luckyAA)

我在另一个文件中调用此函数,如下所示:

for i in range(lenghtPairs):
    r1 = randrange(20)
    r2 = randrange(20)
    coppie.append([aminoacidi[r1], aminoacidi[r2]])

for i in range(lenghtPairs):
    dictionary = dict()
    frequenze = dict()

    if i == 0:
        a = randrange(20)
        b = randrange(20)
        pairs[0] = [aminoacids[a], aminoacids[b]]
    else:
        c = randrange(20)
        pairs[i][0] = aminoacids[c]
        distanceNeighbours = distance(pairs[i][0],pairs[i-1][0])
        aaChosen = magicfunction(distanceNeighbours,pairs[i-1][1])
        pairs[i][1] = aaChosen

    print(i + 1)

我试过条件=> if not aaCandidates: break但它不起作用:

      File "/.../lib/python3.4/random.py", line 255, in choice
    raise IndexError('Cannot choose from an empty sequence')
IndexError: Cannot choose from an empty sequence

1 个答案:

答案 0 :(得分:1)

您的列表为空,因此random.choice()失败。当列表为空时,你需要决定做什么而不是,但是在for循环的,所以当列表有完成建筑:

for aa in amminoacids:
    if distance(aa,referenceAA) == referenceDistance:
        aaCandidates.append(aa)

if not aaCandidates:
    return 'some default choice'

luckyAA = choice(aaCandidates)
return luckyAA

break放入循环的所有操作都是为了确保如果第一个aa不是候选者,则不会将任何内容添加到列表中。