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

答:

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

a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 创建一个空列表b
b = []
# 遍历列表的元素下标
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]
# 创建一个空列表b
b = []
# 变量列表中的元素
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] = j
print(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})

最新文章

  1. JS巧妙思路
  2. 高版本Chrome不支持showModalDialog
  3. 用Qt写软件系列二:QCookieViewer(浏览器Cookie查看器)
  4. php __set() __get() __isset() __unset()四个方法的应用
  5. C#中Attribute的继承
  6. c++读入之 -- 汉字读入遇到的问题
  7. Codeforces 404D [DP]
  8. Spark1.0源码编译
  9. 三分钟学会缓存工具DiskLruCache
  10. 七天学会SALTSTACK自动化运维 (2)
  11. Qt线程QThread简析(8个线程等级,在UI线程里可调用thread-&gt;wait()等待线程结束,exit()可直接退出线程,setStackSize设置线程堆栈,首次见到Qt::HANDLE,QThreadData和QThreadPrivate)
  12. js获取非行间样式或定义样式
  13. 使用ajax和history.pushState无刷新改变页面URL(转)
  14. MySQL基础简介
  15. 【Python】 用户图形界面GUI wxpython I 基本用法和组件
  16. ASP.NET CORE Linux发布工具(文件对比 只上传差异文件;自动启停WebServer命令;上传完成自动预热WebServer)
  17. 从session原理出发解决微信小程序的登陆问题
  18. Flask之项目创建,路由以及会话控制
  19. 无监督学习算法-Apriori进行关联分析
  20. 身高安排方法(基础dfs)

热门文章

  1. Spring cloud系列之win10 下安装 ZooKeeper 的方法
  2. 【C/C++】泛型栈
  3. struct放入list中按照某字段排序
  4. 阶段01Java基础day22IO流03
  5. VIM入门
  6. void的几点用法
  7. Linux:Ubuntu系统的安装
  8. 【转】20-TCP 协议(滑动窗口——基础)
  9. Linux_x86下NX与ASLR绕过技术
  10. git全局忽略文件