在列表python中迭代空列表

2024-10-02 14:17:05 发布

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

以以下代码为例:

a = [['James Dean'],['Marlon Brando'],[],[],['Frank Sinatra']]

n = 0

for i in a:
    print a[n][0]
    n = n + 1

我的索引值似乎出错了:

^{pr2}$

如何跳过名为a的列表中的空列表?在


Tags: frank代码in列表forprintjamessinatra
3条回答

您可以检查列表是否为空,空列表在布尔上下文中有False值-

for i in a:
    if i:
        print a[n][0]
    n = n + 1

另外,您可以使用n函数,它返回当前元素和索引-

^{pr2}$

简单:

for i in a:
    if i:
        print i[0]

这个答案是有效的,因为当您像我在这里所做的那样,在if语句中将一个列表(如i)转换为一个布尔值时,它会评估列表是否为而不是空,这正是您想要的。在

您可以进行测试,也可以捕获异常。在

# Test
for i in a:
    if a[n]:
        print a[n][0]
    n = n + 1

# Exception
for i in a:
    try:
        print a[n][0]
    except IndexError:
        pass
    finally:
        n = n + 1

你甚至可以使用压缩的print "\n".join(e[0] for e in a if e),但是它的可读性很差。在

顺便说一句,我建议使用for i, element in enumerate(a),而不是手动递增n

相关问题 更多 >

    热门问题