如何处理空列表,python3

2024-09-19 23:32:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个函数可以创建一个氨基酸列表(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)

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

^{pr2}$

我尝试了条件=>;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

Tags: 函数in列表ifnotaabreakchoice
1条回答
网友
1楼 · 发布于 2024-09-19 23:32:30

您的列表为空,因此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不是候选项,则不会将任何内容添加到列表中。在

相关问题 更多 >