簡體   English   中英

Python:檢查嵌套列表中的下一個列表

[英]Python: Check Next List in Nested List

month = [[0,1,0,1,0,1,1], [1,1,1,1,1,1,1], [0,0,0,0,0,0,1], [1,0,0,0,0,0,1]]

每個嵌套列表對應一個星期,每個1對應一個“事件”,每個事件的長度在 2-14 之間隨機
例子:
我想在month[0][5]處輸入時長為 6 天的事件,如何才能讓接下來的 6 天所有“事件”(包括跨越當前周的事件)變為 0?

預計 Output:

month = [[0,1,0,1,0,1,0], [0,0,0,0,0,1,1], [0,0,0,0,0,0,1], [1,0,0,0,0,0,1]]

您可以從 i = 0 和 j = 5 開始運行嵌套 for 循環,讓它運行直到 j = 7,此時 i 遞增 1。然后循環直到完成等於事件長度的迭代,同時將值替換為0。

    month[0][5] = 6
    for i in range(0,len(month)):
       for j in range(6,8):
          month[i][j] = 0

這是一種方法:

week, day = 0, 5 #starting point eg: month[0][5]
event_days = 6
for _ in range(event_days):
    week, day = (week + 1, 0) if day == len(month[week])-1 else (week, day + 1)
    month[week][day] = 0

output:

>>
[
  [0, 1, 0, 1, 0, 1, 0]
, [0, 0, 0, 0, 0, 1, 1]
, [0, 0, 0, 0, 0, 0, 1]
, [1, 0, 0, 0, 0, 0, 1]
]

除了將月份表示為嵌套列表之外,您還可以將月份扁平化為幾天。 有了這個列表,大多數操作應該會簡單得多。 無論何時需要,您都可以每周按days[7*week:7*(week+1)]

days = [0,1,0,1,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,1]

# set an event
event_week = 0
event_day_of_week = 5
event_days = 6

event_begin = 7 * event_week + event_day_of_week + 1
event_end = event_begin + event_days
days[event_begin:event_end] = [0] * event_days

# get a week
week_begin = 1*7
week_end = 2*7
second_week = days[week_begin:week_end]

print(second_week)
>>>[0, 0, 0, 0, 0, 1, 1]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM