car = lambda lst: lst[0] cdr = lambda lst: lst[1:] ''' level: returns the top level elements of a list Given: ls, a list Result: a new list ''' def level(ls): if not ls: return [] elif not isinstance(car(ls),list): return [car(ls)] + level(cdr(ls)) else: return level(cdr(ls)) ''' pair: returns a list of lists, each list has an odd and even pair Given: ls, a list Result: a list ''' def pair(ls): result = [] while ls: result.append(ls[0:2]) ls = ls[2:] return result ''' connect: returns a list of tuples, each tuple represents an edge of the graph Given: ls, a list Result: a list of tuples ''' def connect(ls): result = [] if cdr(ls): if cdr(cdr(ls)): for item in pair(ls): result.extend(connect(item)) else: second = car(cdr(ls)) for item in level(second): result.append((car(ls),item)) result.extend(connect(second)) return result print connect([1,[2,[3,[4],5],6,[7]]])
Run
Reset
Share
Import
Link
Embed
Language▼
English
中文
Python Fiddle
Python Cloud IDE
Follow @python_fiddle
Browser Version Not Supported
Due to Python Fiddle's reliance on advanced JavaScript techniques, older browsers might have problems running it correctly. Please download the latest version of your favourite browser.
Chrome 10+
Firefox 4+
Safari 5+
IE 10+
Let me try anyway!
url:
Go
Python Snippet
Stackoverflow Question