我想单行编码。清单理解

时间:2018-10-25 10:23:54

标签: python

def vector_size_check(*vector_variables):
    for i in range(len(vector_variables) - 1):
        if len(vector_variables[i]) == len(vector_variables [i + 1]):
            return True
        else:
            return False
print(vector_size_check([1, 2, 3], [4, 2], [1, 5, 6]))

我想用一行代码表达上面的代码(列表理解)。

3 个答案:

答案 0 :(得分:2)

鉴于您要检查所有可迭代对象的长度是否相同:

def vector_size_check(*vector_variables):
    return all(len(x) == len(vector_variables[0]) for x in vector_variables)

但是我个人还是主张一种即使代码多行也更易于理解的解决方案。

答案 1 :(得分:1)

一种非常简洁的编码方式:

def vector_size_check(*vector_variables):
    return len(set(map(len,vector_variables)))==1

答案 2 :(得分:1)

目前尚不清楚代码应该做什么。因为您要求列表理解,所以我假设结果应该是一个列表,根据每对连续元素的长度是否相同,包含真/假。为此,您可以使用zip(lst, lst[1:])配方来迭代这些对:

def vector_size_check(*vs):
    return [len(a) == len(b) for a, b in zip(vs, vs[1:])]

>>> print(vector_size_check([1, 2, 3], [4, 2], [1, 5, 6]))
[False, False]
>>> print(vector_size_check([1, 2, 3], [4, 2], [1,2], [1, 5, 6], [5,6,7]))
[False, True, False, True]