Сочетание из таблицы с конкретными критериями - PullRequest
0 голосов
/ 18 октября 2018

У меня есть таблица с Day в качестве заголовка столбца и температурой в качестве строки.В таблице указано, сколько раз в день была заданная минимальная температура.В приведенной ниже таблице минимальная температура по понедельникам составляла 1 градус четыре раза, минимальная температура во вторник - 1 градус 0 раз, минимальная температура среды - 1 градус 3 раза и т. Д.

     **Mon**       **Tue**      **Wed**     
1      4              0            3
2      0              1            0
3      1              4            2
4      2              0            1
5      0              1            3    
6      7              3            2
7      0              0            1
8      2              1            4

Iхотите сгенерировать все возможные комбинации (a,b,c) температур и дней, которые обозначают равноотстоящие значения, такие как (a-b) = 3 и (b-c) = 0.

Понедельник с минимальной температурой 1 градус = 4 Вторник с мин. Температурой 2 градуса = 1 Разница = 3

Вторник с мин. Температурой 2 градуса = 1 Среда с мин. Температурой4 градуса = 1 разница = 0

Выходное значение в виде метки строки: (1,2,4), (1,2,7) и (6,3,8)

Как получить аналогичные комбинации одинаково разнесенных значений по всей таблице

1 Ответ

0 голосов
/ 18 октября 2018

Не уверен, ясно ли я понял требование.Но убедитесь, что это то, что вам нужно:

>>> from itertools import product
>>> temperatures = [
    [4,0,3],
    [0,1,0],
    [1,4,2],
    [2,0,1],
    [0,1,3],
    [7,3,2],
    [0,0,1],
    [2,1,4]
]
>>> monday_values,tuesday_values,wednesday_values = zip(*temperatures)
>>> result = []
>>> for i,j,k in product(range(len(monday_values)), range(len(tuesday_values)), range(len(wednesday_values))):
        # remove same day values
        if i==j or j==k or k==i:
            continue
        if (monday_values[i]-tuesday_values[j]==3) and (tuesday_values[j]-wednesday_values[k]==0):
            result.append((i+1,j+1,k+1))


>>> result
[(1, 2, 4), (1, 2, 7), (1, 5, 4), (1, 5, 7), (1, 8, 4), (1, 8, 7), (6, 3, 8)]
...