【问题标题】:comparing sub-list elements in list using python [duplicate]使用python比较列表中的子列表元素[重复]
【发布时间】:2018-11-09 05:10:03
【问题描述】:

我有一个列表 a=[[1,2],[3,4],[5,6]] 并且我需要检查子列表中的所有元素是否按升序排列(例如 [1,2] 是小于 [3,4] 和 [5,6],并且 [3,4] 小于 [5,6] 等等)。 我使用以下功能:

def FirstRuleLink (L):
    for i in range(0,len(L)):
        for j in range(0,len(L[i])):
            if L[i][0]<L[i+1][0] and L[i][1]<L[i+1][1]:
                return True
            else:
                return False

但是 python 给我的错误信息是索引超出范围。那么如何更改此代码以获得正确的输出。

【问题讨论】:

  • 为什么不直接L == sorted(L)?
  • 您认为将[1, 2] 与[3, 4] 进行比较应该如何工作?
  • 见this answer中的第2点。
  • sorted 不会检查子列表的两个元素我认为
  • @p.deman 对,它可能工作也可能不工作,这取决于 OP 想要什么。

标签: python list


【解决方案1】:

试试看:

a = [[1,2],[3,4],[5,6]]

def FirstRuleLink (a):
    for i,nxt_elmnt in zip(a, a[1:]):
        if i[0] <= nxt_elmnt[0] and i[1] <= nxt_elmnt[1]:
            pass
        else:
            return False

【讨论】:

  • @YakymPirozhenko 感谢您发现错误,请查看并告诉我如何改进。
  • 我会选择all(list(t) == sorted(t) for t in zip(*a))。这和您的解决方案都不同于 OP 使用严格不等式的意图。此外,您可能的意思是在 for 循环之后 return True。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-22
  • 2020-09-20
  • 1970-01-01
  • 1970-01-01
  • 2017-03-12
  • 2019-09-06
  • 1970-01-01
相关资源
最近更新 更多