【问题标题】:Combination from a table with specific criteria从具有特定标准的表中组合
【发布时间】:2018-10-18 10:11:42
【问题描述】:

我有一个表格,其中 Day 作为列标题,温度作为行。该表列出了一天达到给定最低温度的次数。在下表中,周一最低气温 1 度 4 次,周二最低气温 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

我想生成所有可能的温度组合(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)

我应该如何在整个表格中获得等距值的相似组合?

【问题讨论】:

    标签: python combinations itertools


    【解决方案1】:

    不确定我是否清楚地理解了要求。但请检查这是否是您所需要的:

    >>> 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)]
    

    【讨论】:

    • 谢谢。我现在可以从这个开始。问题是我有一个 30 行和 30 列的 excel 表来应用条件。对数据进行分类将是一个问题。一个更懒惰的自动分类数据的解决方案将不胜感激。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-05
    • 2017-03-31
    • 1970-01-01
    • 1970-01-01
    • 2017-05-06
    相关资源
    最近更新 更多