Python 将大小不等的二维列表行与try-catch进行比较会导致程序不稳定地跳转

Python 将大小不等的二维列表行与try-catch进行比较会导致程序不稳定地跳转,python,Python,我有一个叫做矩阵的2D列表。每列的行数可以不相等。我需要比较这些行。如果某列的某行不存在,则我的try-catch将跳过该行,并将该行设置为的变量保留为空字符串 问题是,当索引不存在时,代码将跳转到不同的异常块。例如,如果z超出范围,那么代码可能会在y之后立即跳转到异常规则并再次执行z。有时这个循环的值为K,比如5,但它永远不会超过3 我如何阻止代码像这样跳转,并在尝试后立即进入异常规则。有没有更好的方法来比较2D列表中不同行数的行,而不出现不稳定的try-catch行为 while(k <

我有一个叫做矩阵的2D列表。每列的行数可以不相等。我需要比较这些行。如果某列的某行不存在,则我的try-catch将跳过该行,并将该行设置为的变量保留为空字符串

问题是,当索引不存在时,代码将跳转到不同的异常块。例如,如果z超出范围,那么代码可能会在y之后立即跳转到异常规则并再次执行z。有时这个循环的值为K,比如5,但它永远不会超过3

我如何阻止代码像这样跳转,并在尝试后立即进入异常规则。有没有更好的方法来比较2D列表中不同行数的行,而不出现不稳定的try-catch行为

while(k < 3):
 x = ""
 y = ""
 z = ""
 k = 0
 try:
     x = Matrix[0][i]
 except IndexError:
     k = k + 1

 try:
     y = Matrix[1][i]
 except IndexError:
     k = k + 1

 try:
     z = Matrix[2][i]
 except IndexError:
     k = k + 1

 if k == 3:  #Prevents submitting x,y,z if they are all empty strings
     break
 i = i + 1
 results = compare(x,y,z)
while(k<3):
x=“”
y=“”
z=“”
k=0
尝试:
x=矩阵[0][i]
除索引器外:
k=k+1
尝试:
y=矩阵[1][i]
除索引器外:
k=k+1
尝试:
z=矩阵[2][i]
除索引器外:
k=k+1
如果k==3:#如果x、y、z都是空字符串,则阻止提交它们
打破
i=i+1
结果=比较(x,y,z)

您似乎可以使用以下方法来实现您的目标:

>>> Matrix = [["a","b","c"],["d"], ["e", "f"]]
>>> from itertools import zip_longest
>>> for item in zip_longest(*Matrix, fillvalue=""):
...     print(item)
...
('a', 'd', 'e')
('b', '', 'f')
('c', '', '')

不,因为当“i”超出矩阵的索引时,K会增加。“i”永远递增,直到“i”超出矩阵[0][i]、矩阵[1][i]和矩阵[2][i]的索引。这将导致3个异常连续出现,使k=3并结束循环。当然,情况并非如此。我的程序跳转到异常块,该异常块位于try-It当前所在位置的上方,而不是下方。我明白了。然后
为True时:
也会工作,因为
中断。但最好使用Python的内置功能压缩长度不等的迭代器。我把我的答案简化为这个建议。我怀疑你的程序跳转到错误的
,除了
块,特别是因为我们无法重现你的问题。