2024-10-02 14:17:05 发布
网友
以以下代码为例:
a = [['James Dean'],['Marlon Brando'],[],[],['Frank Sinatra']] n = 0 for i in a: print a[n][0] n = n + 1
我的索引值似乎出错了:
如何跳过名为a的列表中的空列表?在
您可以检查列表是否为空,空列表在布尔上下文中有False值-
False
for i in a: if i: print a[n][0] n = n + 1
另外,您可以使用n函数,它返回当前元素和索引-
n
简单:
for i in a: if i: print i[0]
这个答案是有效的,因为当您像我在这里所做的那样,在if语句中将一个列表(如i)转换为一个布尔值时,它会评估列表是否为而不是空,这正是您想要的。在
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),但是它的可读性很差。在
print "\n".join(e[0] for e in a if e)
顺便说一句,我建议使用for i, element in enumerate(a),而不是手动递增n
for i, element in enumerate(a)
您可以检查列表是否为空,空列表在布尔上下文中有
False
值-另外,您可以使用
^{pr2}$n
函数,它返回当前元素和索引-简单:
这个答案是有效的,因为当您像我在这里所做的那样,在
if
语句中将一个列表(如i
)转换为一个布尔值时,它会评估列表是否为而不是空,这正是您想要的。在您可以进行测试,也可以捕获异常。在
你甚至可以使用压缩的
print "\n".join(e[0] for e in a if e)
,但是它的可读性很差。在顺便说一句,我建议使用
for i, element in enumerate(a)
,而不是手动递增n
相关问题 更多 >
编程相关推荐