code fragment One from

# #########################################################
""" 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
>>>
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值