博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python学习札记(十七) 高级特性3 列表生成式
阅读量:5127 次
发布时间:2019-06-13

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

参考:

Note

1.List Comprehensions,即列表生成式,是Python中内置的非常强大的list生成式。

eg.生成一个列表:[1*1, 2*2, ..., 10*10]

使用for...in的方法:

#!/usr/bin/env python3L1 = []for i in range(1, 11) :    L1.append(i*i)print(L1)

使用列表生成式:

L2 = [i*i for i in range(1, 11)]print(L2)

output:

sh-3.2# ./listcomprehensions1.py [1, 4, 9, 16, 25, 36, 49, 64, 81, 100][1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

2.列表生成式可以在后面加上条件判断:

eg.符合 (i*i)%2==0 要求

L3 = [i*i for i in range(1, 11) if (i*i)%2 == 0]print(L3)

output:

[4, 16, 36, 64, 100]

3.也可以使用两层循环:

L4 = [i+j for i in range(1, 11) for j in range(1, 11)]print(L4)
[2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
L5 = [i+j for i in 'ABC' for j in 'abc']print(L5)
['Aa', 'Ab', 'Ac', 'Ba', 'Bb', 'Bc', 'Ca', 'Cb', 'Cc']

4.使用列表生成式能简化代码,如输出当前目录的文件名:

import osL6 = [i for i in os.listdir('.')] # listdir()print(L6)
['listcomprehensions1.py']

5.对于dict来说,列表生成式也可以生成key-value的list:items()方法

dic = {'Chen': 'Student', '952693358': 'QQ', 'Never-give-up-C-X': 'WeChat'}L7 = [x+'='+y for x, y in dic.items()]print(L7)
['952693358=QQ', 'Chen=Student', 'Never-give-up-C-X=WeChat']

6.将字符串变成小写字符串:lower()函数

str1 = 'HeyGirl'L8 = [i.lower() for i in str1]print(L8)
['h', 'e', 'y', 'g', 'i', 'r', 'l']

Practice

如果list中既包含字符串,又包含整数,由于非字符串类型没有lower()方法,所以列表生成式会报错:

>>> L = ['Hello', 'World', 18, 'Apple', None]>>> [s.lower() for s in L]Traceback (most recent call last):  File "
", line 1, in
File "
", line 1, in
AttributeError: 'int' object has no attribute 'lower'

使用内建的isinstance函数可以判断一个变量是不是字符串:

>>> x = 'abc'>>> y = 123>>> isinstance(x, str)True>>> isinstance(y, str)False

提供:L1 = ['Hello', 'World', 18, 'Apple', None]

期待输出L2 = [L1中属于字符串的元素的小写]

Ans:

#!/usr/bin/env python3L1 = ['Hello', 'World', 18, 'Apple', None]L2 = [i.lower() for i in L1 if isinstance(i, str)]print(L2)
sh-3.2# ./listcomprehensions2.py ['hello', 'world', 'apple']

2017/2/6

转载于:https://www.cnblogs.com/qq952693358/p/6371395.html

你可能感兴趣的文章
虚拟化架构中小型机构通用虚拟化架构
查看>>
继承条款effecitve c++ 条款41-45
查看>>
Java泛型的基本使用
查看>>
1076 Wifi密码 (15 分)
查看>>
noip模拟赛 党
查看>>
bzoj2038 [2009国家集训队]小Z的袜子(hose)
查看>>
Java反射机制及其Class类浅析
查看>>
Postman-----如何导入和导出
查看>>
移动设备显示尺寸大全 CSS3媒体查询
查看>>
图片等比例缩放及图片上下剧中
查看>>
【转载】Linux screen 命令详解
查看>>
background-clip,background-origin
查看>>
Android 高级UI设计笔记12:ImageSwitcher图片切换器
查看>>
【Linux】ping命令详解
查看>>
对团队成员公开感谢博客
查看>>
java学习第三天
查看>>
python目录
查看>>
django+uwsgi+nginx+sqlite3部署+screen
查看>>
Andriod小型管理系统(Activity,SQLite库操作,ListView操作)(源代码下载)
查看>>
在Server上得到数据组装成HTML后导出到Excel。两种方法。
查看>>