code fragment One from

本文介绍了一种将多层级的嵌套序列转换为单一维度序列的方法,通过递归算法实现,适用于Python编程中常见的数据结构操作场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

##########################################################
"""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
    
elsereturn 1

def isScalar(obj):
    
return isStringLike(obj) or not canLoopOver(obj)

seq1 
= [['a''b', {3:3}], [12], 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、付费专栏及课程。

余额充值