python06-切片、列表生成器

原创 2016年05月31日 14:06:50

1 切片操作

切片是截取list/tuple/str中元素的简便操作。这是一种采用下标操作的方式,所以自然不适合于dict和set这种无序存储对象。

比如说有一个list是L=[1,2,3,4,5]
那么针对该list的切片操作就有以下几种:

  • L[1:5] 结果为[2,3,4,5]
    表示截取L中下标为1到下标为4的元素。注意两点:

    1、list的下标是从0开始的,我只见过matlab下标从1开始。
    2、“含前不含后”:即包含前面的下标,但是不包含后面的那个下标,比如上面的例子中是1到4而不是1到5

  • L[:2] 结果为[1,2]
    L[2:] 结果为[3,4,5]
    L[:] 结果为[1,2,3,4,5]

    省略最前面的那个数字代表从列表第一个开始,省略第二个数字代表到最后一个为止并且包含最后一个!两个数字到省略,代表全部。

  • L[-5:-1] 结果为[1,2,3,4]

    因为L[-1]代表的是list的最后一个元素,所以也可以倒数切片,当然了还是“含前不含后”,最后一个不包含。

  • L[::2] 结果为[1,3,5]
    L[0:5:2] 结果为[1,3,5]
    最后一个数字表示每几个元素取一个!也就是可以间隔取。

  • 最后一点,其他对象的切片。
    (2,3,4,5)[:2] 结果为(2,3)
    “suitengjie”[2::2] 结果为“iegi”

2 列表生成式

由一个列表产生一个新的列表,切片是一种方式,列表生成式更是一种强大的方式。
使用方法就是:把for循环当做定语用就可以了。

[含n的表达式 for n in  list的名字]

使用方法依次讲解如下:

a、普通用法

[n*n for n in range(1,9,2)]
结果为:
[1,9,25,49]

b、结合判断语句

[n+2 for n in range(10) if n%2==0]
结果为:
[2,4,6,8,10]

这一应用表明,在for循环后面还可以加if判断语句做筛选呢。

c、双变量

[k+’=’+v for k,v in {‘x’:’a’,y’:’b’,’z’,’c’}.items()]
结果为:
‘x’=’a’
‘y’=’b’
‘z’=’c’

有一点在这里进行讲解:加号’+’在列表和字符串操作中的作用


 - [‘sui’,’sun’]+[‘bianbian’] 结果为: [‘sui’,’sun’,’binabian’]

 - ‘sui’+’sun’ 结果为: ‘suisun’

d、双重循环

[m+n for m in ‘sui’ for n in ‘sun’]
结果为:
[‘ss’,‘su’,‘sn’,‘us’,’uu’,’un’,’is’,’iu’,’in’]

这里是双重循环,要注意的是双重循环并不是属于同一级的,是两级循环。要将双重循环跟两个变量的循环区分开来!

版权声明:本文为博主原创文章,未经博主允许不得转载。

Python列表切片详解([][:][::])

Python切片是list的一项基本的功能,最近看到了一个程序,里面有这样一句类似的代码:a = list[::10]不太明白两个冒号的意思就上网百度,发现大多数人写的博客中都没有提到这一个用法,因此...
  • bcj296050240
  • bcj296050240
  • 2015年06月01日 17:08
  • 15229

python基础IV(切片、迭代、生成列表)

对list进行切片 取一个list的部分元素是非常常见的操作。比如,一个list如下: >>> L = ['Adam', 'Lisa', 'Bart', 'Paul'] 取前3个元素,应该怎么...
  • Before1993
  • Before1993
  • 2016年05月06日 16:17
  • 1550

python——切片 迭代 列表生成式 生成器

切片 slice,对list进行筛选生成新list namelist = ['Bob', 'Jack', 'Tom', 'Harry', 'Green', 'Martin'] print namel...
  • mardax
  • mardax
  • 2017年04月15日 14:02
  • 326

python 多维切片

多维切片???——>numpy??——>cython??——>nose?——>easy_install
  • yageeart
  • yageeart
  • 2014年08月12日 18:36
  • 4653

Python语言学习讲解十一:生成器表达式改写较大的列表推导

注:每周一到周五都会进行相关Python基础知识更新,欢迎大家提宝贵的意见 列表推导的缺点是:在列表推导过程中,对于输入序列中的每个值来说,可能都要创建仅含一项元素的全新列表。当输入的数据比较少时,不...
  • Windgs_YF
  • Windgs_YF
  • 2016年11月23日 16:54
  • 396

Python3的切片

Python3的切片非常灵活,可以很方便地对有序序列进行切片操作,代码简单易用。大家都知道,我们可以直接使用索引来访问序列中的元素,同时索引可分为正向和负向两种,而切片也会用到索引,下面放上一个图,有...
  • downing114
  • downing114
  • 2017年04月22日 17:56
  • 1375

列表解析及生成器表达式的效率问题

列表解析(List Comprehensions),来自函数式的编程语言Haskell。是一个非常有用,简单而且灵活的工具,可以动态地创建列表。自Python2.0,列表开始加入到Python中,里面...
  • Jerry_1126
  • Jerry_1126
  • 2016年04月18日 05:48
  • 706

我的python进阶之路三

4-10 切片:选择你在本章编写的一个程序,在末尾添加几行代码,完成以下任务。 (1)打印消息“The first three items in the list are:”,再使用切片来打印列表的前...
  • L_dream_2016
  • L_dream_2016
  • 2017年04月27日 21:17
  • 236

python 生成器、列表/字典/集合解析式区别

一、列表解析列表解析也叫列表推导式,是python编程中常用到的语法糖。列表推导是一个将一个列表(实际上是任意可迭代对象)转换成另一个列表的工具。在转换时,每个元素都可以按照某个条件被包含在新的列表中...
  • luckytanggu
  • luckytanggu
  • 2016年11月14日 00:35
  • 1394

简易新闻客户端(生成列表)

制作一个简易的新闻客户端,主要目的是学习网络数据解析及异步加载,目前只包括从网页获取数据生成列表功能,未添加点击列表显示新闻内容功能...
  • haopengfei91
  • haopengfei91
  • 2016年07月17日 14:57
  • 84
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:python06-切片、列表生成器
举报原因:
原因补充:

(最多只允许输入30个字)