当前位置: 首页 > 知识库问答 >
问题:

比较元组与元组列表

左丘宜年
2023-03-14

我必须将元组与元组列表进行比较,如果整数小于列表中的任何元组,则返回True。例如,如果我有super(“番茄”,10,5)[(“土豆”,5,6),(“橙色”,11,6)]将返回True,因为单独元组(“番茄”,10,5)中的整数比列表中的元组(“橙色”,11,6)小,但是如果我有super(“甜瓜”,10,6)[(“土豆”,5,6),(“橙色”,11,6)]将返回False。

我试试这个

superM :: (String, Int, Int) -> [(String, Int, Int)] -> Bool
superM (s,a,b) ((_,c,d):xs)
  | a < c && b < d = True
  |otherwise =  superM (s,a,b) xs  

但不工作时,它应该返回假,我不知道为什么?

注意:字符串对于这个问题并不重要,我必须忽略它。

共有1个答案

年烈
2023-03-14

您没有为空列表定义basecase。因此,如果没有匹配的元素,列表最终将被耗尽,然后空列表将不匹配。因此,您可以为空列表添加规则:

superM :: (String, Int, Int) -> [(String, Int, Int)] -> Bool
superM _ [] = False
superM (s,a,b) ((_,c,d):xs)
  | a < c && b < d = True
  |otherwise =  superM (s,a,b) xs

我们可以使用逻辑or来摆脱警卫:

superM :: (String, Int, Int) -> [(String, Int, Int)] -> Bool
superM _ [] = False
superM (s,a,b) ((_,c,d):xs) = a < c && b < d || superM (s,a,b) xs

但是我们也可以使用any::Foldable f=

superM :: (Foldable f, Ord x, Ord y) => (a, x, y) -> f (b, x, y) -> Bool
superM (_, a, b) = any p
    where p (_, c, d) = a < c && b < d

 类似资料:
  • 问题内容: 在我当前的应用程序中,我需要能够执行这种类型的查询: 并给出以下数据的答案: 在实际的SQL中最有效的方法是什么?请记住,这是一个示例,我的实际应用程序中的表具有不同的列和数据类型以及数亿行。我使用MySQL,如果有帮助的话。您还可以假定这些列上具有PRIMARY或UNIQUE索引。 如果该解决方案很容易扩展到更多/更少的列,那就更好了。 元组比较: 有几个人问过,所以我应该把这个问题

  • 我试图将输入与arraylist中的值进行比较。 前任;我有一个arraylist: 数组的每个索引在我的程序中代表一个唯一的属性。e、 g索引0代表,索引1代表等。如果我做返回第二个数组。 我正在尝试将与每个数组中的第二个元素进行比较。所以假设我运行这个,我希望它遍历每个数组中的每个[1],如果该索引匹配,则返回true。 因此,我希望它将'number'(1102)与每个第一个索引元素进行比较

  • 假设我有一个叫“序列”的类。这个类有一个实例变量。还有一些方法可以创建这个选项卡,比如: 现在,我想创建一个方法,它接受两个Sequence对象作为参数,并返回相同tab元素的数量。所以,我创建了这样的方法:

  • 问题内容: 我需要将列表排序为: 我已经使用了该函数,并且能够根据值进行排序…但是我无法按字母顺序进行排序,因为我需要按照数字的降序和字母的升序对列表进行排序数字具有相同的值。 问题答案: 使用元组作为浮点数为负的排序键可以反转顺序: 如果您不能进行求反(例如对字符串或字母值或非数字值),则可以利用Python sort函数稳定的事实,并分两步进行排序:

  • 我将在序言中说我使用的是Swift1.2。我目前正在研究一个广度优先搜索算法,我以前在其他语言中实现过这个算法,比如javaScript或Python。 真的,我所要求的是一个优雅的方法来找到这两个之间的重复... 上面的新列表表示可以添加的新节点(不是重复的)问题是...复制的确实会被添加。下面是我的乱七八糟的代码:

  • 问题内容: 我一直在阅读编程书,作者展示了一个类似的示例: 所以,我想知道为什么为什么等于假?如何比较这两个元组? 顺便说一句,这本书没有解释。 问题答案: 比较元组的位置:将第一元组的第一项与第二元组的第一项进行比较;如果它们不相等(即第一个大于或小于第二个),则这是比较的结果,否则将考虑第二个,然后是第三个,依此类推。 请参阅常见序列操作: 相同类型的序列也支持比较。特别是,通过比较相应的元素