【问题标题】:Creating simple list from calendar dates Python从日历日期Python创建简单列表
【发布时间】:2017-11-29 18:06:46
【问题描述】:

我在 Python 中使用过 calendar.py 模块:

for day in list(calendar.monthcalendar(2017,calmonth)):
    print(day)

创建一个月的矩阵:

[0, 0, 0, 0, 0, 0, 1]
[2, 3, 4, 5, 6, 7, 8]
[9, 10, 11, 12, 13, 14, 15]
[16, 17, 18, 19, 20, 21, 22]
[23, 24, 25, 26, 27, 28, 29]
[30, 31, 0, 0, 0, 0, 0]

我想把它转换成一个简单的列表,比如:

(1,2,3,4....31)

这意味着摆脱零并将矩阵转换为列表。

我试过先用 numpy 把它变成一个数组:

for day in list(calendar.monthcalendar(2017,calmonth)):
    print(day)
    dayarray = np.squeeze(np.asarray(day))
    print(dayarray)

但似乎没有其他用于消除零或转换为列表的 numpy 公式有效。

【问题讨论】:

    标签: python list numpy matrix calendar


    【解决方案1】:

    无需使用monthcalendarcalendar.py 功能更适合您的需求:

    _, ndays = calendar.monthrange(2017, 12)
    l = list(range(1, ndays+1))
    print(l)
    

    输出:

    [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31]
    

    【讨论】:

      【解决方案2】:

      你可以用两个for循环来提取它:

      my_matrix = [[0, 0, 0, 0, 0, 0, 1],
                 [2, 3, 4, 5, 6, 7, 8],
                 [9, 10, 11, 12, 13, 14, 15],
                 [16, 17, 18, 19, 20, 21, 22],
                 [23, 24, 25, 26, 27, 28, 29],
                 [30, 31, 0, 0, 0, 0, 0]]
      
      my_list = []
      for array in my_matrix:
          for i in array:
              if i>0:
                  my_list.append(i)
      
      print(my_list)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-08-22
        • 2020-02-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多