加入收藏 | 设为首页 | 会员中心 | 我要投稿 鄂州站长网 (https://www.0711zz.com/)- 数据分析、网络、云渲染、应用安全、大数据!
当前位置: 首页 > 编程开发 > Python > 正文

python 基础 切片 迭代列表生成式

发布时间:2020-07-09 03:39:07 所属栏目:Python 来源:互联网
导读:对list 进行切片 如列表 L = [Adam, Lisa, Bart, Paul] L[0:3] [Ada

对list 进行切片   如列表     L = ['Adam','Lisa','Bart','Paul']     L[0:3]     ['Adam','Bart']     L[0:3]表示,从索引0开始取,直到索引3为止,但不包括索引3。     即索引0,1,2,正好是3个元素。      如果第一个索引是0,还可以省略:     L[:3]     ['Adam','Bart']     切片操作还可以指定第三个参数:       L[::2]       ['Adam','Bart']       第三个参数表示每N个取一个,上面的 L[::2] 会每两个元素取出一个来,       也就是隔一个取一个。       把list换成tuple,切片操作完全相同,只是切片的结果也变成了tuple      倒序切片     对于list,既然Python支持L[-1]取倒数第一个元素,那么它同样支持倒数切片,试试:       L = ['Adam','Paul']       L[-2:]         ['Bart','Paul']       L[:-2]         ['Adam','Lisa']       L[-3:-1]         ['Lisa','Bart']       L[-4:-1:2]         ['Adam','Bart']   对字符串切片     字符串可以进行切片操作,只是操作结果仍是字符串。       'ABCDEFG'[:3]         'ABC'       'ABCDEFG'[-3:]         'EFG'       'ABCDEFG'[::2]         'ACEG'   什么是迭代     如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们成为迭代(Iteration)     因为 Python 的 for循环不仅可以用在list或tuple上,还可以作用在其他任何可迭代对象上。   索引迭代     Python中,迭代永远是取出元素本身,而非元素的索引。     对于有序集合,元素确实是有索引的。有的时候,我们确实想在 for 循环中拿到索引     方法是使用enumerate() 函数:     L = ['Adam','Paul']       for index,name in enumerate(L):     print index,'_',name       0 - Adam       1 - Lisa       2 - Bart       3 - Paul        迭代dict 的value     dict 对象有一个values() 方法,这个方法把dict 转换成一个包含所有values 的list     这样,我们迭代的就是 dict 的没一个value;     d = { 'Adam': 95,'Lisa': 85,'Bart': 59 }     print d.values()     [85,95,59]     还有一个itervalues()方法,用itervalues()方法替代values()方法,迭代效果完全一样     那这两个方法有何不同之处呢?       1.values()方法实际上把一个 dict 转换成了包含 value 的list。       2. 但是itervalues()方法不会转换,它会在迭代过程中依次从 dict 中取出 value,       所以 itervalues() 方法比 values() 方法节省了生成 list 所需的内存   迭代dict 的key 和value     dict 对象的items()方法返回的值:     d = { 'Adam': 95,'Bart': 59 }       print d.items()     [('Lisa',85),('Adam',95),('Bart',59)]     tems() 方法把dict对象转换成了包含tuple的list,我们对这个list进行迭代,可以同时获得key和value:       for key,value in d.items():         print key,':',value           Lisa : 85           Adam : 95           Bart : 59    生成列表       要生成list [1,2,3,4,5,6,7,8,9,10],我们可以用range(1,11):         range(1,11)         [1,10]         但如果要生成[1x1,2x2,3x3,...,10x10]怎么做?方法一是循环:         L = []         for x in range(1,11):         L.append(x * x)         [1,16,25,36,49,64,81,100]         [x * x for x in range(1,11)]         [1,100]     条件过滤       如果我们只想要偶数的平方,不改动 range()的情况下,可以加上 if 来筛选:         [x * x for x in range(1,11) if x % 2 == 0]         [4,100]       有了 if 条件,只有 if 判断为 True 的时候,才把循环的当前元素添加到列表中。     多层表达式       对于字符串 'ABC' 和 '123',可以使用两层循环,生成全排列:         [m + n for m in 'ABC' for n in '123']           ['A1','A2','A3','B1','B2','B3','C1','C2','C3']       翻译成循环代码就像下面这样:         L = [] for m in 'ABC': for n in '123': L.append(m + n)

(编辑:鄂州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读