解决数组任务python

时间:2018-04-29 13:25:15

标签: python arrays

我下面有一个数组,其中包含每天总计奶牛的产量。

[5, 3, 7, 9, 3, 3, 7, 108, 66, 16, 5, 3, 7, 3]

牛群中有两头奶牛,它们每天挤奶两次,因此我的阵列中有14个元素,每个元素代表每日总挤奶产量,因此每个元素有7个元素对应产量总计7天。

我的数组的格式是。

[Cow1Day1, Cow1Day2, Cow1Day3, Cow1Day4, Cow1Day5, Cow1Day6, Cow1Day7, Cow2Day1, Cow2Day2, Cow2Day3, Cow2Day4, Cow2Day5, Cow2Day6, Cow2Day7]

我需要找出在4天或更长的时间内哪头母牛产量低于12升。我该怎么做?

注意:根据用户的输入,我的牛群中甚至可以有更多的奶牛。

2 个答案:

答案 0 :(得分:1)

试试这个:

Any better solutions? - which will revert one machine, apply all roles, take snapshot, then continue to the next machine.

答案 1 :(得分:0)

data = [5, 3, 7, 9, 3, 3, 7, 108, 66, 16, 5, 3, 7, 3]

首先分割您的奶牛数据,以获得每头牛每周产量的单独列表,如下所示:

cows = [data[x:x+7] for x in range(0, len(data), 7)]

输出:

[[5, 3, 7, 9, 3, 3, 7], [108, 66, 16, 5, 3, 7, 3]]

现在,对于每头奶牛,弄清楚任何4天窗口的总和是否小于12:

bad_yields = [any([sum(cow[n:4+n])<12 for n in range(len(cow)-4+1)]) for cow in cows]

输出:

[False, False]

最后,打印出哪些奶牛的产量低于12

for idx, ylt12 in enumerate(bad_yields):
    if ylt12:
        print("Yield less than 12 for cow %d" % (idx + 1))