Pythonic方法检查许多列表的长度是否相同

rob*_*ntw 15 python if-statement list

我有很多列表,我将在我的程序中使用,但我需要确保它们的长度相同,否则我将在以后的代码中遇到问题.

在Python中执行此操作的最佳方法是什么?

例如,如果我有三个列表:

a = [1, 2, 3]
b = ['a', 'b']
c = [5, 6, 7]
Run Code Online (Sandbox Code Playgroud)

我可以这样做:

l = [len(a), len(b), len(c)]
if max(l) == min(l):
   # They're the same
Run Code Online (Sandbox Code Playgroud)

是否有更好或更多的Pythonic方法来做到这一点?

Sve*_*ach 26

假设你有一个非空的列表列表,例如

my_list = [[1, 2, 3], ['a', 'b'], [5, 6, 7]]
Run Code Online (Sandbox Code Playgroud)

你可以用

n = len(my_list[0])
if all(len(x) == n for x in my_list):
    # whatever
Run Code Online (Sandbox Code Playgroud)

这将短路,因此当遇到长度错误的第一个列表时它将停止检查.


Dan*_* D. 9

len(set(len(x) for x in l)) <= 1
Run Code Online (Sandbox Code Playgroud)

  • 可以做`<= 1`来处理`l`为空时的情况...... (3认同)

Rom*_*huk 6

一点功能Python:

>>> len(set(map(len, (a, b, c)))) == 1
False
Run Code Online (Sandbox Code Playgroud)