code fragment One from
2007-08-25 22:07
369 查看
##########################################################
"""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
>>>
相关文章推荐
- [Announcement] Free Code Sample Request Service from the Microsoft All-In-One Code Framework team
- mvc 分页控件(from All-In-One Code Framework )
- New release of code samples from Microsoft All-In-One Code Framework (2011-6-19)
- code fragment Six from
- op Ten One-Liners from CommandLineFu Explained - good coders code, great reuse
- How Can i Transfer Xcode 4 Code Snippets from One Machine to Another?
- code fragment Two from
- Code samples from Microsoft (All-In-One Code Framework) 微软一站式示例代码库
- code fragment Three from
- How Can One Transfer Xcode 4 Code Snippets from One Machine to Another
- code fragment Four from
- code fragment Five from
- Don't rely on black-box testing!! (From Writing Solid Code)
- BAPI to Copy Materials from one Plant to Another
- Sys.WebForms.PageRequestManagerServerErrorException: An unknown error occurred while processing the request on the server. The status code returned from the server was: 500 解决办法
- 关于“user breakpoint called from code at..”错误
- How to update multiple columns of one table using values from another table?
- pdf merge for code one
- Code Fragment-Message Pool的实现与处理
- How do I include one DTD (or fragment) in another?