Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- '''
- === split_list_1 ===
- data: [2, 3, 4, 8, 9, 10, 33, 34]
- part: 0 2 [2, 3, 4]
- part: 3 5 [8, 9, 10]
- part: 6 6 [33, 34]
- result: [[2, 3, 4], [8, 9, 10], [33, 34]]
- ---
- data: [2, 3, 4]
- part: 0 1 [2, 3, 4]
- result: [[2, 3, 4]]
- ---
- UnboundLocalError: local variable 'i' referenced before assignment
- === split_list_2 ===
- data: [2, 3, 4, 8, 9, 10, 33, 34]
- part: [2, 3, 4]
- part: [8, 9, 10]
- part: [33, 34]
- result: [[2, 3, 4], [8, 9, 10], [33, 34]]
- ---
- data: [2, 3, 4]
- part: [2, 3, 4]
- result: [[2, 3, 4]]
- ---
- data: []
- result: []
- ---
- '''
- def split_list_1(data):
- results = []
- start = 0
- for i in range(len(data)-1):
- if data[i+1] - data[i] > 1 :
- print('part:', start, i, data[start:i+1])
- results.append(data[start:i+1])
- start = i+1
- print('part:', start, i, data[start:])
- results.append(data[start:])
- return results
- def split_list_2(data):
- results = []
- while data:
- # move first element from data to part
- part = [data.pop(0)]
- # if there is next element (while data)
- # and next-prev==1 (data[0] - part[-1] == 1)
- # then move from data to part
- while data and data[0] - part[-1] == 1:
- part.append(data.pop(0))
- print('part:', part)
- results.append(part)
- return results
- # --- tests ----
- tests = [
- [2,3,4,8,9,10,33,34],
- [2,3,4],
- [], # split_list_1() doesn't pass this test
- ]
- for data in tests:
- print('data:', data)
- result = split_list_2(data)
- print('result:', result)
- print('---')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement