我有一個項目(日在月號)的陣列,現在我要按月組他們,所以我希望把這個:如何將數組分組?
(1, True), ... (31, True), (1, False) ...(28, True),...
進入這個:
[(1, True), ... (31, True)], [(1, False) ...(28, True)],...
我使用python 3.我應該怎麼做?
我有一個項目(日在月號)的陣列,現在我要按月組他們,所以我希望把這個:如何將數組分組?
(1, True), ... (31, True), (1, False) ...(28, True),...
進入這個:
[(1, True), ... (31, True)], [(1, False) ...(28, True)],...
我使用python 3.我應該怎麼做?
你可以用它產生一個新的組中的每個第一值下降,而不是時間生成函數:
def group_by_month(items):
month = []
for day, flag in items:
if month and month[-1][0] > day:
# new month starting
yield month
month = []
month.append((day, flag))
if month:
yield month
您可以對生成的幾個月迭代或收集所有個月在一個大名單與:
grouped = list(group_by_month(items))
謝謝,這有幫助! – maxpovver
下面應該工作:
days = [(1, True), (2, False), (31, True), (1, False), (2, True)]
month = []
grouped_by_month = []
last = (0, False)
for pair in days:
if pair < last:
grouped_by_month.append(month)
month = []
month.append(pair)
last = pair
grouped_by_month.append(month)
print(grouped_by_month)
捐贈:
[[(1, True), (2, False), (31, True)], [(1, False), (2, True)]]
你如何識別月份?還是假定列表中的每一天都是(非跳躍)年? – veggie1
該月是所有項目之間的值爲1的項目,包括值爲1的第一個值 – maxpovver