list解析

先看下面的例子,这个例子是想得到1到9的每个整数的平方,并且将结果放在list中打印出来

>>> power2 = []
>>> for i in range(1,10):
...     power2.append(i*i)
...
>>> power2
[1, 4, 9, 16, 25, 36, 49, 64, 81]

python有一个非常有意思的功能,就是list解析,就是这样的:

>>> squares = [x**2 for x in range(1,10)]
>>> squares
[1, 4, 9, 16, 25, 36, 49, 64, 81]
  • 找出100以内的能够被3整除的正整数。

我们用的方法是:

aliquot = []for n in range(1,100):if n%3 == 0:aliquot.append(n)print aliquot

用list解析重写,会是这样的:

>>> aliquot = [n for n in range(1,100) if n%3==0]
>>> aliquot
[3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99]

另一个:

>>> print range(3,100,3)
[3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99]

其实,不仅仅对数字组成的list,所有的都可以如此操作。

>>> mybag = [' glass',' apple','green leaf ']   #有的前面有空格,有的后面有空格
>>> [one.strip() for one in mybag]              #去掉元素前后的空格
['glass', 'apple', 'green leaf']

enumerate

这是一个有意思的内置函数,本来我们可以通过for i in range(len(list))的方式得到一个list的每个元素编号,然后在用list[i]的方式得到该元素。如果要同时得到元素编号和元素怎么办?就是这样了:

>>> for i in range(len(week)):
...     print week[i]+' is '+str(i)     #注意,i是int类型,如果和前面的用+连接,必须是str类型
...
monday is 0
sunday is 1
friday is 2

python中提供了一个内置函数enumerate,能够实现类似的功能

>>> for (i,day) in enumerate(week):
...     print day+' is '+str(i)
...
monday is 0
sunday is 1
friday is 2

实验:

>>> seasons = ['Spring', 'Summer', 'Fall', 'Winter']
>>> list(enumerate(seasons))
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
>>> list(enumerate(seasons, start=1))
[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]

在这里有类似(0,‘Spring’)这样的东西,这是另外一种数据类型,待后面详解。

下面将enumerate函数和list解析联合起来,同时显示,在进行list解析的时候,也可以包含进函数

>>> def treatment(pos, element):
...     return "%d: %s"%(pos,element)
...
>>> seq = ["hiekay","hiekay.github.io","python"]
>>> [ treatment(i, ele) for i,ele in enumerate(seq) ]
['0: hiekay', '1: hiekay.github.io', '2: python']

函数lambda:

例如:

g = lambda x:x+1

ambda作为一个表达式,定义了一个匿名函数,上例的代码x为入口参数,x+1为函数体,用函数来表示为:

 def g(x):return x+1
>>> seq = ["hiekay","hiekay.github.io","python"]
>>> foo = lambda i,ele:"%d:%s"%(i,ele)          #lambda函数,给代码带来了简介
>>> [foo(i,ele) for i,ele in enumerate(seq)]
['0:hiekay', '1:hiekay.github.io', '2:python']

python 数据结构 list(3)相关推荐

  1. python3 namedtuple_你不能低估的Python数据结构Namedtuple(二)

    上篇你不能低估的Python数据结构Namedtuple(一)讲了namedtuple的一些基本用法,本篇继续. namedtuples和数据类(Data Class)之间有什么区别? 功能 在Pyt ...

  2. python线性表和队列_[笔记]python数据结构之线性表:linkedlist链表,stack栈,queue队列...

    python数据结构之线性表 python内置了很多高级数据结构,list,dict,tuple,string,set等,在使用的时候十分舒心.但是,如果从一个初学者的角度利用python学习数据结构 ...

  3. python数据结构 树_python数据结构之二叉树的建立实例

    先建立二叉树节点,有一个data数据域,left,right 两个指针域 复制代码 代码如下: # -*- coding: utf - 8 - *- class TreeNode(object): d ...

  4. python数据结构包括什么_Python中的数据结构详解

    概述 在深入研究数据科学和模型构建之前,Python中的数据结构是一个需要学习的关键内容 了解Python提供的不同数据结构,包括列表.元组等 介绍 数据结构听起来是一个非常直截了当的话题,但许多数据 ...

  5. python数据结构树和二叉树,python数据结构树和二叉树简介

    一.树的定义 树形结构是一类重要的非线性结构.树形结构是结点之间有分支,并具有层次关系的结构.它非常类似于自然界中的树. 树的递归定义: 树(Tree)是n(n≥0)个结点的有限集T,T为空时称为空树 ...

  6. python数据结构推荐书-关于数据结构,有哪些不错的参考书推荐?

    学习编程,数据结构是你必须要掌握的基础知识,那么数据结构到底是什么呢? 其实数据结构就是用来描述计算机里存储数据的一种数学模型,因为计算机里要存储很多乱七八糟的数据,所以也需要不同的数据结构来描述. ...

  7. CodeSalt | Python数据结构的实现 — 链表

    Python数据结构实现-链表 1. 简单介绍 链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Point ...

  8. Python数据结构——tuple

    tuple 元组 什么是tuple 元组是一种和列表非常相似的线性数据结构,也支持不同的数据类型. 最大的区别就是元组一旦创建不可改变,和string一样,所有改变元组内容的操作都会返回一个新的元组. ...

  9. Python数据结构——list

    list 列表 什么是list 列表是Python中特有的一种线性数据结构,列表是可变的,有序的,我们可以用选择操作符来改变任意位置的值,和数组不同的是,列表可以同时保存不同类型的元素(异构). 在C ...

  10. Python数据结构——array

    array 数组 array是什么 一般来说,array基本是所有程序语言都有的一种基础线性结构,元素以特定的顺序存储在一段连续的内存中. 在Python中其实也有array这种数据结构,和其他语言的 ...

最新文章

  1. java队列研究_辨证论治失眠疗效评价的医生队列研究
  2. 12c双机rac oracle_深度干货 | 如何借助云原生搞定Oracle备份快速恢复?
  3. 我已经把servlet-api.jar加到classpath中了,可还是无法编译servlet
  4. vector的基本操作
  5. 导入不了css,CSS不导入。
  6. CodeForces - 1341E Nastya and Unexpected Guest(01bfs)
  7. 如何关闭SAP Fiori的病毒扫描设
  8. grunt入门 出处:http://artwl.cnblogs.com
  9. m3u8合并mp4软件_m3u8格式转mp4究极办法!
  10. agilebpm脑图_设计开发平台前端框架介绍 | AgileBPM 敏捷工作流开发平台—开源免费-基于 Activiti 工作流引擎、Flowable...
  11. Linux命令(压缩,解压rar)
  12. @Value竟然能玩出这么多花样,涨知识了
  13. copula 重现期 matlab,合肥市干旱识别及基于Copula的特征值重现期分析
  14. pandas最快入门(一)-读取与数据结构
  15. PLC可编程控制器实训设备
  16. Perl语言的多线程(一)
  17. CollectionView的HeaderView头视图悬停
  18. 集成声卡和独立声卡哪个的性能好些
  19. 2022数学建模高教杯国家一等奖经验分享
  20. Web测试的常见测试点

热门文章

  1. 使用VSccde上传文件到Git时可能出现的情况
  2. SOFAServerless 体系助力业务极速研发
  3. 2021大纲新增词汇
  4. 【题解】[Swerc2008]First Knight
  5. matlab 比较两个函数,Matlab同时拟合两个函数 - 数学 - 小木虫 - 学术 科研 互动社区...
  6. 三个表情纪念我的像素画讲座
  7. 豌豆荚搜索手机中的游戏app形成列表的原理
  8. 论文笔记:SubRank: Subgraph Embeddings via a Subgraph Proximity Measure2020PAKDD
  9. php.c drcom,Drcom (简体中文)
  10. MYSQL 基础篇(补)