博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python【每日一问】04
阅读量:5291 次
发布时间:2019-06-14

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

问:a =  [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],求出列表a中所有奇数并构造新列表

答:

利用列表的元素下标遍历列表

a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]# 创建一个空列表bb = []# 遍历列表的元素下标for i in range(0, len(a)):    if a[i] % 2 == 1: # 判断是否是元素是否是奇数        b.append(a[i]) # 使用 append()方法将符合条件的元素追加到列表b中print(b)

 

直接遍历列表

a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]# 创建一个空列表bb = []# 变量列表中的元素for i in a:    if i % 2 == 1: # 判断元素是否是奇数        b.append(i) # 使用 append()方法追加元素到b列表中print(b)

 

列表推导式

a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
b = [i for i in a if i % 2 == 1]

 

【知识拓展】:Python推导式

 

Python推导式是可以从一个数据序列构建另一个新的数据序列的结构体。 共有三种推导,在Python2和3中都有支持:

(1)列表(list)推导式

(2)字典(dict)推导式

(3)集合(set)推导式

1.语法格式

(1)列表(list)推导式:

variable = [out_exp_res for out_exp in input_list if out_exp == 2]  out_exp_res:  列表生成元素表达式,可以是有返回值的函数。  for out_exp in input_list:  迭代input_list将out_exp传入out_exp_res表达式中。  if out_exp == 2:  根据条件过滤哪些值可以。

简单点说就是:

[表达式 for 变量 in 列表]    或者  [表达式 for 变量 in 列表 if 条件]

 

(2)字典(dict)推导式:

variable = {out_exp_res for out_exp in input_list if out_exp == 2}  out_exp_res:  列表生成元素表达式,可以是有返回值的函数。  for out_exp in input_list:  迭代input_list将out_exp传入out_exp_res表达式中。  if out_exp == 2:  根据条件过滤哪些值可以。

简单点说就是,

{表达式 for 变量 in 字典}    或者  {表达式 for 变量 in 字典 if 条件}

 

(3)集合(set)推导式

variable = {out_exp_res for out_exp in input_list if out_exp == 2}  out_exp_res:  列表生成元素表达式,可以是有返回值的函数。  for out_exp in input_list:  迭代input_list将out_exp传入out_exp_res表达式中。  if out_exp == 2:  根据条件过滤哪些值可以。

简单点说就是,

{表达式 for 变量 in 集合}    或者  {表达式 for 变量 in 集合 if 条件}

 

2.举例说明

(1)列表推导式

需求:a = [1, 2, 3, 4, 5, 6, 7, 8, 9],求出列表a中>5的数的平方并构造新列表

经典写法:

a = [1, 2, 3, 4, 5, 6, 7, 8, 9]b = []for i in a:    if i > 5:        pass        b.append(i**2)print(b)

 

列表推导式写法:

a = [1, 2, 3, 4, 5, 6, 7, 8, 9]print([i**2 for i in a if i > 5])

 

(2)字典推导式

需求:spc = ['name', 'city', 'favorite color'],spc_value = ['kangkang', 'ShenZhen', 'blue']

将第一个列表 spc 中的元素作为键,第二个列表 spc_value 中的元素作为值生成新的字典

经典写法:

spc = ['name', 'city', 'favorite color']spc_value = ['kangkang', 'ShenZhen', 'blue']new_dict = {}for i, j in zip(spc, spc_value):    new_dict[i] = jprint(new_dict)

字典推导式:

spc = ['name', 'city', 'favorite color']spc_value = ['kangkang', 'ShenZhen', 'blue']new_dict = {}# zip()函数可以成对读取元素new_dict = {i: j for i, j in zip(spc, spc_value)}print(new_dict)

如果想让 代码更加强健,可以判断 spc 中是否包含 name,不包含就不执行

spc = ['name', 'city', 'favorite color']spc_value = ['kangkang', 'ShenZhen', 'blue']new_dict = {}# zip()函数可以成对读取元素new_dict = {i: j for i, j in zip(spc, spc_value) if not i == "name"}print(new_dict)

 

(3)集合推导式

需求:x = [1, 5, 2, 3, 4, 6, 7, 1, 9, 0],求出列表x中<5的数的立方并构造集合

注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典

经典写法:

x = [1, 5, 2, 3, 4, 6, 7, 1, 9, 0]y = set()for i in x:    if i < 4:        y.add(i**3)print(y)

集合推导式:

x = [1, 5, 2, 3, 4, 6, 7, 1, 9, 0]print({i**3 for i in x if i < 4})

 

转载于:https://www.cnblogs.com/ElegantSmile/p/10704690.html

你可能感兴趣的文章
ubuntu 安装后的配置
查看>>
Html学习_简易个人网页制作
查看>>
angular中ng-bind指令小案例
查看>>
jqery总结
查看>>
Lodop获取客户端主网卡ip地址是0.0.0.0
查看>>
VSCODE更改文件时,提示:EACCES: permission denied的解决办法(mac电脑系统)
查看>>
web前端之路,js的一些好书(摘自聂微东 )
查看>>
【模板】对拍程序
查看>>
微信小程序开发初体验
查看>>
dos批处理(bat)运行exe
查看>>
关键字
查看>>
Pycharm安装Markdown插件
查看>>
上传图片并预览
查看>>
哈夫曼编码_静态库
查看>>
【转】redo与undo
查看>>
C#更新程序设计
查看>>
常用Request对象获取请求信息
查看>>
解决升级系统导致的 curl: (48) An unknown option was passed in to libcurl
查看>>
Shell命令-内置命令及其它之watch、date
查看>>
Java Session 介绍;
查看>>