当前位置: 首页 > 编程日记 > 正文

Python-100 练习题 01 列表推导式

最近打算好好练习下 python,因此找到一个练习题网站,打算每周练习 3-5 题吧。

www.runoob.com/python/pyth…

另外,这个网站其实也还有 Python 的教程,从基础到高级的知识都有。


Example-1 三位数组合

题目:有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?

思路

最简单的方法,就是穷举法了,分别求出在百位、十位、个位上的数字,然后剔除出现重复数字的组合,剩余的就是答案了。

代码实现

直接代码实现如下:

def create_three_digits(number_start=1, number_end=4):'''给定指定数字范围(比如1到4),求可以组成多少个无重复的三位数:param number_start: 起始数字:param number_end: 结束数字:return: 返回数量,以及可能的三位数的列表'''count = 0result_list = list()for i in range(number_start, number_end + 1):for j in range(number_start, number_end + 1):for k in range(number_start, number_end + 1):if (i != j) and (i != k) and (j != k):count += 1result_list.append(str(i) + str(j) + str(k))return count, result_list
复制代码

写得更加简便点,可以采用列表推导式:

def create_three_digits2(number_start=1, number_end=4):'''采用列表推导式实现:param number_start::param number_end::return:'''return [str(i) + str(j) + str(k) for i in range(number_start, number_end + 1) for j inrange(number_start, number_end + 1) for k inrange(number_start, number_end + 1) if (i != j) and (i != k) and (j != k)]
复制代码

输出结果如下,总共有 24 种不同的排列组合。

valid count=24, and they are:
123
124
132
134
142
143
213
214
231
234
241
243
312
314
321
324
341
342
412
413
421
423
431
432
复制代码

当然,目前这种代码实现的时间复杂度是很高的,毕竟是三个for循环。如果有更好的解法,可以在评论留言,告诉我!

知识点复习--列表推导式

列表推导式(又称列表解析式)提供了一种简明扼要的方法来创建列表。

它的结构是在一个中括号里包含一个表达式,然后是一个 for 语句,然后是 0 个或多个 for 或者 if 语句。那个表达式可以是任意的,意思是你可以在列表中放入任意类型的对象。返回结果将是一个新的列表,在这个以 if 和 for 语句为上下文的表达式运行完成之后产生。

用代码表示列表推导式如下:

variable = [out_exp for out_exp in input_list if out_exp == 2]
复制代码

一个简明的例子如下:

multiples = [i for i in range(30) if i % 3 is 0]
print(multiples)
# Output: [0, 3, 6, 9, 12, 15, 18, 21, 24, 27]
复制代码

那么,什么时候最适合用列表推导式呢?

其实是当你需要使用 for 循环来生成一个新列表。举个例子,你通常会这样做:

squared = []
for x in range(10):squared.append(x**2)
复制代码

这时候,采用列表推导式最合适:

squared = [x**2 for x in range(10)]
复制代码

源代码在:

github.com/ccc013/Code…


参考文章:

  • 列表推导式(list comprehensions)

欢迎关注我的微信公众号--机器学习与计算机视觉,或者扫描下方的二维码,大家一起交流,学习和进步!

往期精彩推荐

学习笔记
  • 机器学习入门系列(1)--机器学习概览
  • [GAN学习系列] 初识GAN
  • [GAN学习系列2] GAN的起源
  • [GAN学习系列3]采用深度学习和 TensorFlow 实现图片修复(上)
数学学习笔记
  • 程序员的数学笔记1--进制转换
  • 程序员的数学笔记2--余数
  • 程序员的数学笔记3--迭代法
Github项目 & 资源教程推荐
  • [Github 项目推荐] 一个更好阅读和查找论文的网站
  • [资源分享] TensorFlow 官方中文版教程来了
  • 必读的AI和深度学习博客
  • [教程]一份简单易懂的 TensorFlow 教程
  • [资源]推荐一些Python书籍和教程,入门和进阶的都有!

相关文章:

在思科模拟器下搭建WWW、DNS、FTP、Email服务

目录一、搭建基本的拓扑结构二、配置基本IP三、配置静态路由Router0:Router1:四、搭建WWW服务0号服务器:1号服务器:五、在pc0上测试www服务六、搭建FTP服务对于3号服务器:七、在pc0上测试搭建的FTP服务八、搭建E-mail服务对于2号服…

Android SQLite数据库之事务的学习

SQLite是Android系统内置的一款轻量级的关系型数据库,它的运算速度非常快,占用资源很少,通常只需要几百K的内存就足够了。SQLite不仅支持标准的SQL语法,还遵循了数据库的ACID事务。 模拟一个应用场景:进行一次转账操作…

1组合逻辑电路--多路选择器与多路分解器

1.2多路选择器 1.2.1不带优先级的多路选择器 四路选择器如下 代码如下 View Code 1 module multiplexer 2 ( 3 input iA, 4 input iB, 5 input iC, 6 input iD, 7 input [1:0] iSel, 8 output reg oQ 9 );10 11 always (*)12 begin13 case(iSel)1…

java——慎用可变参数列表

说起可变参数,我们先看下面代码段,对它有个直观的认识,下方的红字明确地解释了可变参数的意思: 1 public class VarargsDemo{2 3 static int sum(int... args) {4 int sum 0;5 for(int arg:args)6 …

一位老码农的分享:一线程序员该如何面对「中年危机」?

如果这是第二次看到我的文章,欢迎文末扫码订阅我个人的公众号(跨界架构师)哟~ 本文长度为2728字,建议阅读8分钟。坚持原创,每一篇都是用心之作~先来聊一下这个问题的背景吧。前两天有小伙伴问到Z哥这个问题…

白话spring依赖注入

Spring能有效地组织J2EE应用各层的对象。Action?Service?DAO?,都可在Spring的管理下有机地协调、运行。Spring将各层的对象以松耦合的方式组织在一起,对象与对象之间没有直接的联系,各层对象的调用完全面向…

2软件测试初相识

软件测试初相识 软件测试初识为什么要做软件测试,做软件测试的必要性是什么?关于软件测试的定义有很多种软件测试的两面性软件测试的价值总结软件测试初相识 文章目录 软件测试初识为什么要做软件测试,做软件测试的必要性是什么?关于软件测试的定义有很多种软件测试的两面性…

【go】sdk + idea-plugin 开发工具安装

http://golang.org/doc/install/source第一步:windows 安装 git第二步$ git clone https://go.googlesource.com/go $ cd go $ git checkout go1.4.1保持翻墙姿势 D:\Program Files (x86)\Git\bin>git clone https://go.googlesource.com/go Cloning into go... …

无限极:对虚假宣传行为查处不力 推十条整改措施

中新网1月28日电 无限极今日发表声明称,将进一步响应整治“保健”市场乱象百日行动,承担主体责任,落实专项整改。 声明全文如下: 1月8日,国家市场监督管理总局等13部委联合发出《关于开展联合整治“保健”市场乱象百日…

基于WTL自绘 - 表情选择界面

1.无窗口绘制(网格, 背景,图片,预览)。2.采用Cximage处理图像。3.关于源码 请发邮件 satngqq.com4.已经增加到wtl_duilib 0.5版Demo中转载于:https://www.cnblogs.com/satng/archive/2011/08/13/2138780.html

3软件测试原理与软件缺陷

软件测试原理与软件缺陷 文章目录 前言软件测试原理软件缺陷总结前言 知其然,更要知其所以然。 软件测试原理 下图中很直观的展示出了软件测试原理。根据测试目标设计测试输出,依据测试依据(包括软件需求、设计等)给出预期结果,在被测对象上运行得到运行结果,将运行结果…

Oracle wrap 和 unwrap( 加密与解密) 说明

一. Wrap 说明官网的说明如下:A PL/SQL Source Text Wrappinghttp://download.oracle.com/docs/cd/E11882_01/appdev.112/e17126/wrap.htm#LNPLS1744You can wrap the PL/SQL source text for any of these stored PL/SQL units, thereby preventing anyone from di…

python的沙盒环境virtualenv(二)--简单使用

安装 sudo apt-get install python-virtualenv使用方法 virtualenv [虚拟环境名称] 如,创建**ENV**的虚拟环境 virtualenv ENV默认情况下,虚拟环境会依赖系统环境中的site packages,就是说系统中已经安装好的第三方package也会安装在虚拟环境…

使用Powershell批量为Azure资源添加Tags

在使用Azure的过程中,我们可以将Tags应用于Azure资源,从而可以将元数据逻辑的组织到某些分类中。每个Tags由名称和值组成。例如,我们可以将名称“Environment”和值“Production”应用于生产中的所有资源。应用Tags以后,我们可以使…

4软件测试阶段

软件测试流程和规范前言软件测试阶段总结前言 不以规矩,不成方圆。 软件测试阶段 在软件测试中主要的测试阶段包括文档集测试、单元测试、集成测试、系统测试(包括功能测试和非功能测试)、安装测试、验收测试。 总结 不同的测试阶段有不同…

InfluxDB 2.0 Alpha展开测试!将会加入查询语言Flux

InfluxData释出其开源时序数据库InfluxDB 2.0 Alpha测试版,这个版本最大的更新,便是增加了新的数据脚本和查询语言Flux,不只能提供跨平台时序数据操作,还能将TICK组件堆栈整合成一个更加一致的平台。InfluxDB是一个以Go语言开发的…

Weka 开发[1]-Instances类

先google一下,把Weka软件下载下来,安装完成之后,在Weka的安装目录中有一个weka.jar的包。 把包添加到工程中后,就可以调用weka中的函数了。 再介绍一点weka的基本知识,在weka的目录下,有一个data的文件夹&a…

SQL Server 2005 18452登录错误 的解决方法

无法连接到服务器 服务器:消息18452, 级别16,状态1 [Microsoft][ODBC SQL Server Driver][SQL Server]用户‘sa’登陆失败。原因:未与信任SQL Server连接相关联 该错误发生的原因是由于SQL Ser…

5软件开发与软件测试

软件开发与软件测试 前言瀑布模型V模型总结前言 软件测试与软件开发过程是相辅相成、相互依赖、相互转换的过程。 瀑布模型 瀑布模型规定了软件生命周期中的各项活动,包括需求分析、概要设计、编码、测试、验收与交付、使用与维护等。瀑布模型中各个软件过程是自上而下、相互…

认识docker

一、Docker工作原理 二、Docker容器和虚拟机对比 三、镜像容器管理 1、Docker关键组件 2、Docker架构 3、Docker内部组件 镜像(Image)——一个特殊的文件系统 Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置…

Enterprise Library系列文章回顾与总结

Enterprise Library系列文章回顾与总结 自Enterprise Library 1.1 推出以来,Terry写了一系列的关于Enterprise Library的文章,其中得到了很多朋友的支持,在这里一并表示感谢。为了方便大家的阅读,这里我做了一下整理与分类。第Ⅰ部…

句法模式识别(两)-正规文法、上下文无关文法

正规的语法特点 1.全部长度有限的语言都是正规的。 2.用正规文法当然能产生无限长串,当中周期反复部分的长度不大于非终止符的长度。 举个样例 在此规则之下。能生成句子 当中周期反复部分为ab,这个样例的非终止符的元素个数为2,故满足2不大于…

6软件测试过程

软件测试过程前言软件测试的几个典型过程总结前言 测试策划、测试设计与实现、测试执行、回归测试和测试总结。 软件测试的几个典型过程 软件测试过程主要包括测试策划、测试设计与实现、测试执行、回归测试和测试总结,每个活动过程中包括的主要工作内容如下图所示…

BFS之三(单向bfs和康托压缩)

//poj 1077 Eight#include <iostream> //单向bfs和康托压缩#include<string>using namespace std;bool visited[1000000];int fac[]{1,1,2,6,24,120,720,5040,40320,362880}; //9!表int cantor(int arr[]) {int temp,num1; //当排列为…

[JavaWeb基础] 007.Struts2的配置和简单使用

1.框架简介 采用Struts能开发出基于MVC(Model-View-Controller)设计模式的应用构架&#xff0c;用于快速开发Java Web应用。Struts实现的重点在C(Controller)&#xff0c;包括ActionServlet/RequestProcessor和我们定制的Action,也为V(View)提供了一系列定制标签&#xff08;C…

使用Rust + Electron开发跨平台桌面应用 ( 一 )

前言 近段时间学习了Rust&#xff0c;一直想着做点什么东西深入学习&#xff0c;因为是刚学习&#xff0c;很多地方都不熟悉&#xff0c;所以也就不能拿它来做编译器这些&#xff0c;至于web开发&#xff0c;实际上我并不建议拿这个来学习一门语言&#xff0c;大概有几个方面&a…

7软件质量与测试规范

软件质量与测试规范 前言标准/规范产品质量模型总结前言 标准和规范可以指导测试工作的方向。 标准/规范 软件质量与测试标准分为国际标准、国家标准、行业标准、企业(机构)规范、项目规范等。下一层标准需要在上一层标准的框架下做扩展或补充。比如行业标准首先要满足国家…

UVa 679 - Dropping Balls

称号&#xff1a;有一个完整的二叉树&#xff0c;每个节点是一个开关&#xff0c;最初的全封闭&#xff0c;球从顶点丢弃。 每次通过开关球将将其状态反转。现在先问k球落到d当层交换机经过号。分析&#xff1a;进制编码。经过模拟几次能够看出&#xff0c;球会让开关形成连续二…

【原创】StreamInsight查询系列(六)——基本查询操作之分组聚合

上篇博文介绍了StreamInsight基础查询操作中的用户自定义聚合部分。这篇文章将主要介绍如何在StreamInsight查询中使用分组聚合。 测试数据准备 为了方便测试查询&#xff0c;我们首先准备一个静态的测试数据源&#xff1a;var weatherData new[] {new { Timestamp new DateT…

生态环境部:提升5.5亿居民饮用水环境安全保障水平

资料图&#xff1a;备用水源。于从文 摄 中新网1月30日电 据生态环境部网站消息&#xff0c;生态环境部牵头扎实推进饮用水水源地环境保护专项行动&#xff0c;成效显著。截至2018年12月31日&#xff0c;除9个问题因冬季施工难度大或实际工程量大等因素仍在整治外&#xff0c;…