【问题标题】:Determining if an array inside an array is contiguous判断数组中的数组是否连续
【发布时间】:2019-09-25 04:05:56
【问题描述】:

首先,我从排序的试验数据开始:

[[ 2,  4,  9, 10, 11],
 [ 2,  6,  7,  8, 14],
 [ 3,  6,  8,  8, 11],
 [ 4,  6, 10, 11, 13],
 [ 2,  3,  3,  5,  6],
 [ 3,  5, 12, 12, 13],
 [ 2,  2,  3,  9, 11],
 [ 2,  5, 11, 11, 13],
 [ 3,  5,  7,  9, 10],
 [ 2,  6,  7,  8, 14]]

然后我的目标是在每个数组的位置返回一个 True 或 False,然后打印出 True(连续数组)的数量

到目前为止,我已经这样做了:

def isStraight(arr, n):

    for i in range(1,n): 
        if (arr[i] - arr[i-1] > 1) : 
            return 0
    return 1

但它返回一个错误提示

The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

所以我不确定如何实现另一个 for 循环来遍历内部数组。任何帮助将不胜感激。

【问题讨论】:

标签: python arrays multidimensional-array


【解决方案1】:

如果任何连续元素的差值大于 1,我假设数组是连续的,请尝试以下代码:

a =[[ 2,  4,  9, 10, 11],
 [ 2,  6,  7,  8, 14],
 [ 3,  6,  8,  8, 11],
 [ 4,  6, 10, 11, 13],
 [ 2,  3,  3,  5,  6],
 [ 3,  5, 12, 12, 13],
 [ 2,  2,  3,  9, 11],
 [ 2,  5, 11, 11, 13],
 [ 3,  5,  7,  9, 10],
 [ 2,  6,  7,  8, 14]]

def isStraight(arr, n):
    for i in range(1,n): 
        if (arr[i] - arr[i-1] > 1) : 
            return 0
    return 1

values = []
for j in a:
    if(isStraight(j, len(j))==1):
        values.append(True)
    else:
        values.append(False)

print(values)

【讨论】:

  • 抱歉没有更清楚,但这就是我要找的。谢谢!
【解决方案2】:

此代码的输出包含真假列表。 True,表示其对应的数组是连续的,false 表示其对应的数组是不连续的。最后显示连续数组的个数。

def contiguous_arrays(array):
    value=[]
    for i in range(len(array)):
        value.append(array[i]==list(range(min(array[i]),max(array[i])+1)))
    print(value)
    print('Number of continuous arrays:',value.count(True))

array=[[ 2,  4,  9, 10, 11],
       [ 2,  6,  7,  8, 14],
       [ 3,  6,  8,  8, 11],
       [ 4,  6, 10, 11, 13],
       [ 2,  3,  3,  5,  6],
       [ 3,  5, 12, 12, 13],
       [ 2,  2,  3,  9, 11],
       [ 2,  5, 11, 11, 13],
       [ 3,  5,  7,  9, 10],
       [ 2,  6,  7,  8, 14]]
contiguous_arrays(array)
# [False, False, False, False, False, False, False, False, False, False]             Number of continuous arrays: 0

【讨论】:

  • 欢迎来到stackoverflow ramin。请为您的回答提供一些解释。
猜你喜欢
  • 2014-03-13
  • 2012-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-16
  • 1970-01-01
  • 2018-03-12
  • 2021-04-05
相关资源
最近更新 更多