问: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})

Python【每日一问】04的更多相关文章

  1. Python每日一练(1):计算文件夹内各个文章中出现次数最多的单词

    #coding:utf-8 import os,re path = 'test' files = os.listdir(path) def count_word(words): dic = {} ma ...

  2. python每日一函数 - divmod数字处理函数

    python每日一函数 - divmod数字处理函数 divmod(a,b)函数 中文说明: divmod(a,b)方法返回的是a//b(除法取整)以及a对b的余数 返回结果类型为tuple 参数: ...

  3. Python全栈day 04

    Python全栈day 04 一.解释器/编译器 补充:编译型语言和解释型语言? # 编译型:代码写完后,编译器将其变成成另外一个文件,然后交给计算机执行. c c++,c# ,java # 解释型: ...

  4. 每日一问:Android 消息机制,我有必要再讲一次!

    坚持原创日更,短平快的 Android 进阶系列,敬请直接在微信公众号搜索:nanchen,直接关注并设为星标,精彩不容错过. 我 17 年的 面试系列,曾写过一篇名为:Android 面试(五):探 ...

  5. 每日一问:谈谈 volatile 关键字

    这是 wanAndroid 每日一问中的一道题,下面我们来尝试解答一下. 讲讲并发专题 volatile,synchronize,CAS,happens before, lost wake up 为了 ...

  6. 每日一问:讲讲 Java 虚拟机的垃圾回收

    昨天我们用比较精简的文字讲了 Java 虚拟机结构,没看过的可以直接从这里查看: 每日一问:你了解 Java 虚拟机结构么? 今天我们必须来看看 Java 虚拟机的垃圾回收算法是怎样的.不过在开始之前 ...

  7. 每日一问:你了解 Java 虚拟机结构么?

    对于从事 C/C++ 程序员开发的小伙伴来说,在内存管理领域非常头疼,因为他们总是需要对每一个 new 操作去写配对的 delete/free 代码.而对于我们 Android 乃至 Java 程序员 ...

  8. 每日一问:LayoutParams 你知道多少?

    前面的文章中着重讲解了 View 的测量流程.其中我提到了一句非常重要的话:View 的测量匡高是由父控件的 MeasureSpec 和 View 自身的 `LayoutParams 共同决定的.我们 ...

  9. 每日一问:简述 View 的绘制流程

    Android 开发中经常需要用一些自定义 View 去满足产品和设计的脑洞,所以 View 的绘制流程至关重要.网上目前有非常多这方面的资料,但最好的方式还是直接跟着源码进行解读,每日一问系列一直追 ...

  10. python每日一练:0007题

    第 0007 题: 有个目录,里面是你自己写过的程序,统计一下你写过多少行代码.包括空行和注释,但是要分别列出来. # -*- coding:utf-8 -*- import os def count ...

随机推荐

  1. 索引(B-树)

    前言 本文是在讲述什么样的数据结构适合作为索引,以及其适合作为索引的原因.而阅读本文需要对B树和B+树结构有稍微的理解.以及需要对磁盘操作知识有稍微的了解.对于磁盘操作的相关知识,在文章尾部的链接文章 ...

  2. golang并发(1)介绍

    概述 简而言之,所谓并发编程是指在一台处理器上“同时”处理多个任务. 随着硬件的发展,并发程序变得越来越重要.Web服务器会一次处理成千上万的请求.平板电脑和手机app在渲染用户画面同时还会后台执行各 ...

  3. Aircrack-ng破解WPA/WPA2加密WiFi教程(Kali)

    一.说明 以前学Kali,很多人都笑赞“WiFi破解神器”.我很烦,一是我不会破解二是我觉得他们也不会破解三是我隐约觉得所谓的WiFi破解不是什么技术性的操作. 后来基础知识充分了然后弄了个无线网卡, ...

  4. java虚拟机之虚拟机类加载机制

    此处主要需要知道什么是java虚拟机?java虚拟机如何进行类加载的? java语言本身是编译型和解释型的语言,先对本地的java文件进行编译,编译后会在本地生成一个class文件,而这个生成的cla ...

  5. HTML⑤

    W3C : 万维网联盟!(World Wide Web Consortium ) 创建于1994年,是web技术领域最权威最具有影响力的标准机构! W3C规定了web技术领域相关技术的标准! 官网地址 ...

  6. jQuery键盘敲击事件,换键的话换键码就可以

    $("body").keyup(function () { if (event.which == 13){ $("#Btn_login").trigger(&q ...

  7. Beta 冲刺 (2/7)

    Beta 冲刺 (2/7) 队名:第三视角 组长博客链接 本次作业链接 团队部分 团队燃尽图 工作情况汇报 张扬(组长) 过去两天完成了哪些任务 文字/口头描述 为utils_wxpy.py添加注释 ...

  8. kolla-ansible配置cinder 的ceph的多种后端存储池【转】

    在实际的使用中,openstack后端采用ceph存储,存储磁盘类型有SATA和SSD,这里如果想基于存储驱动器提供多种云硬盘类型,可以基于下面的配置完成 点击查看配置详情

  9. java中的线程问题(一)什么是线程。

    线程--什么是进程 进程--概念 要解释线程,就必须明白什么是进程. 什么是进程呢? 进程是指运行中的应用程序,每个进程都有自己独立的地址空间(内存空间),比如用户点击桌面的IE浏览器,就启动了一个进 ...

  10. OpenCV学习(一)基础篇

    OpenCV 2 计算机视觉编程手册读书笔记1 矩阵创建 Mat类是OpenCV中非常有用类,用来创建和操作多维矩阵.可以有很多方法构造它. // 构造函数 //! constructs 2D mat ...