比如列表[0,0,0,1,1,2,3,3,3,2,3,3,0,0]分割成[0,0,0],[1,1],[2],[3,3,3],[2],[3,3],[0,0]
如何解決這樣的問題呢?
1、首先說明,如果這樣的題目都不能寫出**,原因在基本的迴圈判斷沒有搞清楚。
2、黃哥在如何訓練自己的程式設計思路 文章所說的,做習題,要像開發專案的流程一樣
(需求->需求分析->設計->編碼->測試->交付等),
拿到乙個習題,還沒有進行分析,就匆匆忙忙敲**,
這個學習方法,是不好的學習方法。
3、如果做這個習題,看黃哥的講解,先要分析,分析看出是按照相鄰元素是不是相同來分組。
設計解決方法,大問題化解為小問題,先化解為找出元素不相同的那個元素的索引,有這個索引後,再進行分組。
4、編碼
2023年 3月11 黃哥修改,修改為時間複雜度為o(n)
**一:
# coding:utf-8
def group_by_element(lst):
'''by 黃哥 基本思路是先取得不同元素起始的索引值,
再按照這個索引值取切片
'''index =
result =
for i, _ in enumerate(lst):
if i < len(lst) - 1 and lst[i + 1] != lst[i]:
for i, item in enumerate(index):
if i < len(index) - 1:
return result
if __name__ == '__main__':
lst = [0, 0, 0, 1, 1, 2, 3, 3, 3, 2, 3, 3, 0, 0]
group = group_by_element(lst)
print group
**二:
# coding:utf-8
def group_by_element(lst):
'''by 黃哥 基本思路是先取得不同元素起始的索引值,
再按照這個索引值,用生成器分組。
'''index =
for i, _ in enumerate(lst):
if i < len(lst) - 1 and lst[i + 1] != lst[i]:
def take(lst, n):
for i in range(n):
yield next(lst)
if not hasattr(lst, 'next'):
lst = iter(lst)
begin = 0
for item in index:
x = list(take(lst, item - begin ))
begin = item
yield x
yield list(lst)
if __name__ == '__main__':
lst = [0, 0, 0, 1, 1, 2, 3, 3, 3, 2, 3, 3, 0, 0]
group = group_by_element(lst)
print list(group)
思路三:
基本思路用乙個二維list , 遍歷list,判斷前後元素是不是相等,如果相等新增到result[-1],
如果不相等,需要新增乙個空。
# coding:utf-8
def group_by_element(lst):
'''by 黃哥 基本思路用乙個二維list , 遍歷list
判斷前後元素是不是相等,如果相等新增到result[-1],如果
不相等,需要新增乙個空
'''result =
length = len(lst)
for i in range(length):
if i < length - 1:
if lst[i] == lst[i + 1]:
else:
return result
if __name__ == '__main__':
lst = [0, 0, 0, 1, 1, 2, 3, 3, 3, 2, 3, 3, 0, 0]
group = group_by_element(lst)
print group
216小時學會python python刪除列表元素 Python列表元素分組
比如列表 0,0,0,1,1,2,3,3,3,2,3,3,0,0 分割成 0,0,0 1,1 2 3,3,3 2 3,3 0,0 如何解決這樣的問題呢?1 首先說明,如果這樣的題目都不能寫出 原因在基本的迴圈判斷沒有搞清楚。2 黃哥在如何訓練自己的程式設計思路 文章所說的,做習題,要像開發專案的流程...
Python 列表元素統計
列表元素統計方法 1.使用字典 對列表元素進行一次遍歷,將結果保留在字典中 2.使用集合和內建函式 將列表轉化為集合,得到所有不同元素,對不同元素呼叫 list.count item 以統計次數 第二種方法的簡單應用 coding utf 8 question 有乙個數字列表,找出列表 現次數超過列...
Python修改列表元素
修改列表元素 python中修改列表元素的方法為,直接將列表中要修改的元素索引指出,然後為其指定新值。其基本語法如下 source list index obj 其中,source list 為待修改的列表 index 為待修改元素的位置索引 obj 為待元素的新值 例如,將請客名單guests列表...