确保矩阵行的长度都相同(python3)

时间:2014-05-08 03:27:08

标签: python list matrix maxlength

所以我有这个python 3代码来输入矩阵:

matrix = []
lop=True
while lop:
    line = input()
    if not line:
        lop=False
    if matrix != []:
        if len(line.split()) != len(matrix[-1]):
            print("Not same length")
            menu()
    values = line.split()
    row = [int(value) for value in values]
    matrix.append(row)

但是,如果我输入

1 2 3
4 5 6 7
8 9 0 1 2

我的代码会让它通过,但您可以注意到第2行和第3行的长度与第1行的长度不同;怎么预防?该行必须与第1行的长度相同,否则必须返回错误消息,例如“行”不具有相同的长度。我不太清楚如何做到这一点。也许:

for row in matrix:
    if len(row) == matrix[1]
        pass
    else:
       print('not same length')

但它没有用。

由于

3 个答案:

答案 0 :(得分:0)

使用内置len()函数和break语句。

matrix = []
lop =True
while lop:
    line = input('Enter your line: ')
    if not line:
        lop=False
    if matrix != []:
        if len(line.split()) != len(matrix[-1]):
            print("Not same length")
            break
    values = line.split()
    row = [int(value) for value in values]
    matrix.append(row)

运行如下:

bash-3.2$ python3 matrix.py
Enter your line: 1 2 3
Enter your line: 4 5 6
Enter your line: 7 8 9 0
Not same length
bash-3.2$ 

答案 1 :(得分:0)

如果你想匹配第一行长度,试试这个,

使用len(matrix[0])

for row in matrix:
    if len(row) == len(matrix[0]):
        pass
    else:
       print('not same lenght')

答案 2 :(得分:0)

(我知道这个问题很老了,但是...)

len(set(map(len,matrix))) == 1

说明:

map(len,matrix) 产生矩阵所有行的长度

set(...) 给出所有存在的行的唯一/不同长度。

  • 如果所有行的长度相同,这将是一个包含 1 个元素的集合。
  • 否则,它将有 2 个或更多。

最后,len(...) == 1 返回我们上面获得的是否包含 1 个单个元素,即所有行是否具有相同的长度。