python(序列递归)【输出原子级别元素。。。】

  晚上回去复习下原来的资料,返现Codebook中有个关于“展开一个嵌套序列”的话题。

  任务说明:序列中的子项可能是序列,子序列的子项仍可能是序列,以此类推,则序列嵌套可以达到任意的深度。需要循环遍历一个序列,将其中所有的子序列展开成一个单一的、只具备基本子项的序列。

  举例来说就是形如如下序列a:

  a = [(1, [2, 3, (7, 8)],), 4, [5, 6, (9, 10)]],根据资料上的代码输出的结果如下:

  (图1),而我可能对于理解任务中所说的原子级别的元素可能有点问题。我根据自己的理解就是想将这个序列一个个的吐出来。

  例如形如[2, 3, (7, 8)]和 (9, 10)还是可以再拆分的,图1的结果只是到了第二层时遇到序列就不拆分了,所以自己动手来做个这样的实现,使得最后的结果如图2所示:

  (图2)。

  实现的代码过程其实就是判断加递归。。

  代码如下:

  

def flatten(sequence):
    for i in sequence:
        if isinstance(i, (list, tuple)):
            flatten(i)
            if not isinstance(i, (list, tuple)):
                for subitem in i:
                    print subitem
        else:
           print i

看到这样的文章顺便有了自己的想法就顺便思考下,感觉这样的处理还是有应用价值的,记录下来。。方便以后使用。。。。

  

时间: 2024-10-13 02:38:52

python(序列递归)【输出原子级别元素。。。】的相关文章

Python序列应用知识回顾

Python序列应用 1.序列 序列是一块用于存放多个值的连续内存空间,并且按一定顺序排列.序列结构有列表.元组.集合.字典和字符串.Python对序列中列表.元组.字符串有索引.切片.相加和相乘操作,可以通过关键字in检查某个元素是否为序列的成员. (1)索引 序列中的每个元素都有一个编号被称为索引,通过索引可以访问序列中的任何元素.索引类似C语言数组中的下标从0开始表示第一个元素,依次递增,但索引可以为负数,例如:-1表示最后一个元素. (2)切片 切片是访问序列中元素的一种方法,可以访问一

Python 序列操作符与函数

Python序列包括:元组.列表.字符串. 1.序列共同支持的函数: 函数 功能 说明 cmp(seq1,seq2) 比较序列大小 从左到右依次比较,直到比较出大小 len(seq1) 获取序列长度 如果seq1为字符串,返回字符串中字符数,否则返回序列中元素个数 max(seq1)或min(seq1)   求最大值或最小值 seq1字符串:返回字符串中ASCII码最大或最小的字符.也可比较序列中元素或多个序列 sorted(seq1) 按由小到大顺序排列   sum(seq1) 求和 对数字型

序列DP(输出有要求)

DP Time Limit:10000MS     Memory Limit:165888KB     64bit IO Format:%lld & %llu Submit Status Description 对于一个给定的S={a1,a2,a3,…,an},若有P={ax1,ax2,ax3,…,axm},满足(x1 < x2 < … < xm)且( ax1 < ax2 < … < axm).那么就称P为S的一个上升序列.如果有多个P满足条件,那么我们想求字典

python学习笔记:python序列

python序列包括字符串.列表和元组三部分,下面先总的说一下python序列共有的一些操作符和内建函数. 一.python序列 序列类型操作符 标准类型的操作符一般都能适用于所有的序列类型,这里说一下序列类型操作符. 1. 成员关系操作符(in.not in) 成员关系操作符是用来判断一个元素是否属于一个序列的.具体语法: 对象 [not] in 序列 2. 连接操作符(+) 这个操作符允许我们把一个序列和另一个相同类型的序列做连接,具体语法: sequence1 +sequence2 3.

已知二叉树的先序遍历序列和中序遍历序列,输出该二叉树的后序遍历序列

题目描述 输入二叉树的先序遍历序列和中序遍历序列,输出该二叉树的后序遍历序列. 输入 第一行输入二叉树的先序遍历序列: 第二行输入二叉树的中序遍历序列. 输出 输出该二叉树的后序遍历序列. 示例输入 ABDCEF BDAECF 示例输出 DBEFCA #include <iostream> #include <cstring> #define MAX 50+3 using namespace std; typedef char Elem_Type; typedef struct B

Java递归输出指定路径下所有文件及文件夹

package a.ab; import java.io.File; import java.io.IOException; public class AE { public static void main(String[] args) { File f=new File("D:\\DD"); new AE().fileList(f); } public void fileList(File fl){ try{ File[] fs=fl.listFiles(); for(File f

Python序列

(1)序列(数据结构的一种)的操作 1.索引(排序的编号) 2.分片 3.序列相加 4.乘法 5.包含 6.获取长度.最小值.最大值 ------------------------数据结构:通过某种方式组织在一起的数据元素的集合内建序列:列表和元组,字符串,Unicode字符串,Buffer对象,xrange对象------------------------ 1.索引(排序的编号): 列表索引: 用[]扣起来表示列表,只要把逗号分隔的不同的数据项使用方括号括起来即可, edwrad=['Ed

递归输出二叉树的每个结点

算法导论:10.4-2 给定一个二叉树,写出一个 O(n) 时间的递归过程,将该树每个结点的关键字输出. #ifndef _BINARY_TREE_H_ #define _BINARY_TREE_H_ /***************************************************** 算法导论:10.4-2 一个二叉树,使用递归输出每个结点 ******************************************************/ #include

【Python】 Python输入和输出

输出格式美化 Python两种输出值得方式:表达式语句和print()函数(第三种方式是使用文件对象的write()方法 标准输出文件可以用sys.stdout引用) 如果你希望输出对的形式更加多样,可以使用str.format()函数来格式化输出值 如果你希望将输出的值转成字符串,可以使用repr()或str()函数来实现. str()函数返回一个用户易读的表达形式. repr()产生一个解释器易读的表达形式. 如 s = 'Hello,world.' str(s) >>>'Hello