当前正在运行:
l1 = [i for i in range(0,10)]
l2 = [i for i in range(0,10)]
l3 = [i for i in range(0,10)]
lists = [l1, l2, l3]
length = len(lists[0])
for l in lists:
if length != len(l):
raise ValueErrorr('not all lists have same length!')
有没有比for
循环更好的测试方法?有没有一种更快/更好的方法不是O(n)
?在
您可以使用集合理解来保留唯一长度,然后检查集合中是否只有一个项目:
另一个棘手的方法是,如果不想调用集合上的
^{pr2}$len()
,可以使用以下逻辑:演示:
首先,您的解决方案不是O(logn)。不可能有对数算法。你必须至少检查一次每一项,所以O(n)是最佳的复杂度。在
我将使用生成器表达式和
all
:这样可以避免两次检查第一个列表的长度,并且不会构建一次性的list/set数据结构。在
all
也延迟求值,这意味着一旦生成器生成第一个长度不同的列表,它将停止并返回False
。在相关问题 更多 >
编程相关推荐