首先,我从排序后的试用数据开始:
[[ 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循环来遍历内部数组。任何帮助将不胜感激。
答案 0 :(得分:0)
我假设如果任何连续元素的差大于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)
答案 1 :(得分:0)
此代码的输出包含true和false的列表。 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