##########################################################
"""Flattening a Nested Sequence
"""
from __future__ import generators
def flatten(sequence, scalarp, result=None):
if result is None: result = []
for item in sequence:
if scalarp(item): result.append(item)
else: flatten(item, scalarp, result)
return result
def flatten22(sequence, scalarp):
for item in sequence:
if scalarp(item):
yield item
else:
for subitem in flatten22(item, scalarp):
yield subitem
def canLoopOver(maybeIterable):
try:
iter(maybeIterable)
except:
return 0
else:
return 1
def canLoopOver22(maybeIterable):
try:
for x in maybeIterable:
return 1
else:
return 1
except:
return 0
def isStringLike(obj):
try: obj+''
except TypeError: return 0
else: return 1
def isScalar(obj):
return isStringLike(obj) or not canLoopOver(obj)
seq1 = [['a', 'b', {3:3}], [1, 2], 3]
print flatten(seq1, isScalar)
for avariable in flatten22(seq1, isScalar):
print avariable
########################################################the output is:
>>>
['a', 'b', 3, 1, 2, 3]
a
b
3
1
2
3
>>>
本文介绍了一种将多层级的嵌套序列转换为单一维度序列的方法,通过递归算法实现,适用于Python编程中常见的数据结构操作场景。
770

被折叠的 条评论
为什么被折叠?



