博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 数据结构 list(3)
阅读量:7310 次
发布时间:2019-06-30

本文共 2218 字,大约阅读时间需要 7 分钟。

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 0sunday is 1friday is 2

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

>>> for (i,day) in enumerate(week):...     print day+' is '+str(i)...monday is 0sunday is 1friday 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']

转载地址:http://ycuim.baihongyu.com/

你可能感兴趣的文章
SAP CRM系统订单模型的设计与实现
查看>>
${value}
查看>>
hdfs写流程
查看>>
手把手指导您使用 Git
查看>>
IDEA快捷键(待续)
查看>>
Java 内存模型
查看>>
区块链-3:区块链底层架构
查看>>
说一说 Spring AOP 中 @Aspect 的高级用法
查看>>
springboot 统一异常处理(包含统一数据校验)
查看>>
Node.js 工具模块
查看>>
闲得无聊?不如用Python设计一个经典小游戏
查看>>
50年以后人工智能将会超越人类大脑,机器控制人类已经成为可能!
查看>>
svnmanager若干bug与漏洞处理
查看>>
一些技术点在其它博客里面的详解
查看>>
MySQL-5.7.18
查看>>
OSChina 周三乱弹 ——程序员祭天传统的真相!
查看>>
OSChina 周日乱弹 ——颜值和代码水平是正比
查看>>
mingw下编译pycrypto出现-mno-cygwin错误
查看>>
NIO非阻塞网络IO-TCP
查看>>
PyConChina2015 大会简介
查看>>