我有一個包含flag
(布爾值)和value
(整數)的對象列表。每個列表項的值都在增加。每次標記屬性交替時,我想將列表轉換爲只有第一個和最後一個值屬性(間隔)的新列表。在Python中將值列表轉換爲區間列表
換句話說,我想轉換此
[
{'flag': True, 'value': 0},
{'flag': True, 'value': 5},
{'flag': True, 'value': 10},
{'flag': False, 'value': 15},
{'flag': False, 'value': 20},
{'flag': False, 'value': 25},
{'flag': False, 'value': 30},
{'flag': False, 'value': 35},
{'flag': False, 'value': 40},
{'flag': True, 'value': 45},
{'flag': True, 'value': 50},
{'flag': True, 'value': 55},
{'flag': True, 'value': 60},
{'flag': False, 'value': 65},
{'flag': False, 'value': 70},
{'flag': False, 'value': 75},
{'flag': False, 'value': 80},
{'flag': False, 'value': 85},
{'flag': True, 'value': 90},
{'flag': True, 'value': 95}
]
到這個(或類似的東西):
[
{'flag': True, 'values': (0, 10)},
{'flag': False, 'values': (15, 40)},
{'flag': True, 'values': (45, 60)},
{'flag': False, 'values': (65, 85)},
{'flag': True, 'values': (90, 95)},
]
什麼是在Python解決這個簡單而優雅的方式?
我希望示例數據不是太混亂。我試過使用for循環和使用reduce來解決這個問題,但都沒有解決方案。
謝謝!
找不到然而與蟒蛇工具這樣做,什麼更好的辦法,因爲筆者問這樣做的最Python的方式,我想說的大規模理解列表不會幫助代碼的可讀性,我會爲for循環尋找相同的答案。 –
@ T.Nel認爲這並不像人們所希望的那樣簡單和「pythonic」,但我不認爲帶有循環的「手動」解決方案會更好。最好把它分成幾行。此外,您可以隨時將這些東西包裝成具有良好名稱和記錄的功能。 –