现在,我试图让我的程序将一个二维列表作为输入,并根据它是否是“矩形”返回true或false(例如,[2,3],[1,5],[6,9]]是矩形的,而[[2,3],[1,8,6]]不是矩形的)到目前为止,我已经想出了这样的方法:
def rectangular(List):
n = List
for i in n:
if len(i) != len(n[0]):
return False
elif len(i) == len(n[0]):
i
我好像想不出如何创造一个“真实”的案例。使用上面的elif,我可以循环查看列表,但是如果我要添加一个returntrue部分,它会在这种情况下立即停止。在这种情况下,while循环会更好吗?感谢所有的帮助!谢谢。在
如果你到最后没有发现一个假案,那么你就知道这是真的,对吧?没有其他的可能性了。在
{{cd2>你只需把cda}完全删除就可以了:
作为旁注,你的
elif
与if
完全相反的条件,最好写为else:
。这样,你就不可能把相反的条件弄错,你的读者就不需要知道它是相反的,等等另外,没有理由将参数作为
^{pr2}$List
,然后将相同的值绑定到n
并使用它。为什么不先拿n
?在通过将
for
语句替换为生成器表达式和all
函数,可以使其更加简洁,甚至更具python风格:但事实上,这和你已经拥有的没什么不同。你应该学习它是如何工作的,但是如果你还不明白,用更详细的方式来做是没有问题的。在
如果你想变得聪明:
我们正在制作一套所有的长度。集合没有重复项,因此这是一组所有不同长度的集合。如果只有一个不同的长度,那意味着所有的长度都是一样的。在
但是,请注意,对于空列表,这将返回
False
(因为有0长度,而不是1),而另外两个将返回True
(因为如果没有要测试的值,则所有值的条件都为空)。我不知道你想要哪一个,但要想知道如何改变你选择的相反的一个应该相对容易些。在可以确保列表中所有元素的长度都相同。或者在Python中:
其中
x
是您要检查的内容。在此解决方案的唯一问题是,如果列表看起来像
[ [1,2], [1,[1,2]], 'ab' ]
,它仍将返回True
。所以你还需要做一些类型检查。在尝试在生成器中使用all函数:
如果iterable的所有元素都是},否则返回{}。在
True
,all
函数返回{您没有调用变量
list
,这很好,但是大写的名称通常表示Python中的一个类,因此lst
比List
更好。在注意:我假设“矩形”表示每个子列表的长度相同。如果实际上每个子列表都应该(比如)2个元素,只需将}。您可能还需要添加一些异常处理,以防传递一个只有一个元素的列表。在
first_len
替换为文本2
,并删除lst[1:]
上的{相关问题 更多 >
编程相关推荐