python 列表生成表格_【转】Python 列表生成式

原文:https://blog.csdn.net/heartyhu/article/details/50988007

1. 生成列表

要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],我们可以用range(1, 11):

>>> range(1, 11)

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

但如果要生成[1x1, 2x2, 3x3, …, 10x10]怎么做?

方法一是循环:

>>> L = []

>>> for x in range(1, 11):

L.append(x * x)

>>> L

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

但是循环太繁琐,而列表生成式则可以用一行语句代替循环生成上面的list:

>>> [x * x for x in range(1, 11)]

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

这种写法就是Python特有的列表生成式。利用列表生成式,可以以非常简洁的代码生成 list。

写列表生成式时,把要生成的元素 x * x 放到前面,后面跟 for 循环,就可以把list创建出来,十分有用,多写几次,很快就可以熟悉这种语法。

例如:

利用列表生成式生成列表 [1x2, 3x4, 5x6, 7x8, …, 99x100]。提示:range(1, 100, 2) 可以生成list [1, 3, 5, 7, 9,…]

方法:

print [x*(x+1) for x in range(1,100,2)]

2.复杂表达式

使用for循环的迭代不仅可以迭代普通的list,还可以迭代dict。

假设有如下的dict:

d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }

完全可以通过一个复杂的列表生成式把它变成一个 HTML 表格:

tds = ['

%s%s' % (name, score) for name, score in d.iteritems()]

print '

print '

NameScore'

print '\n'.join(tds)

print '

'

注:字符串可以通过 % 进行格式化,用指定的参数替代 %s。字符串的join()方法可以把一个 list 拼接成一个字符串。

把打印出来的结果保存为一个html文件,就可以在浏览器中看到效果了(可以看源码查看html):

NameScore

Lisa85

Adam95

Bart59

例如:

在生成的表格中,对于没有及格的同学,请把分数标记为红色。提示:红色可以用

实现。

方法:

d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }

def generate_tr(name, score):

if(score < 60)

return '

%s%s' % (name, score)

return '

%s%s' % (name, score)

tds = [geanerate_tr(name,score) for name, score in d.iteritems()]

print '

print '

NameScore'

print '\n'.join(tds)

print '

'

3.条件过滤

列表生成式的 for 循环后面还可以加上 if 判断。例如:

>>> [x * x for x in range(1, 11)]

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

如果我们只想要偶数的平方,不改动 range()的情况下,可以加上 if 来筛选:

>>> [x * x for x in range(1, 11) if x % 2 == 0]

[4, 16, 36, 64, 100]

1

2

有了 if 条件,只有 if 判断为 True 的时候,才把循环的当前元素添加到列表中。

例如:

请编写一个函数,它接受一个 list,然后把list中的所有字符串变成大写后返回,非字符串元素将被忽略。

提示:

isinstance(x, str) 可以判断变量 x 是否是字符串;

字符串的 upper() 方法可以返回大写的字母。

方法:

def toUppers(L):

return [x.upper() for x in L if isinstance(x,str)]

print toUppers(['Hello', 'world', 101])

4. 多层表达式

for循环可以嵌套,因此,在列表生成式中,也可以用多层 for 循环来生成列表。

对于字符串 ‘ABC’ 和 ‘123’,可以使用两层循环,生成全排列:

>>> [m + n for m in 'ABC' for n in '123']

['A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3']

1

2

翻译成循环代码就像下面这样:

L = []

for m in 'ABC':

for n in '123':

L.append(m + n)

例如:利用 3 层for循环的列表生成式,找出对称的 3 位数。例如,121 就是对称数,因为从右到左倒过来还是 121。

方法:

def huishu(a,b,c):

return a*100+b*10+c

print [ huishu(a,b,c) for a in range(1,10) for b in range(10) for c in range(10

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/329494.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux(CentOS 6.7)下配置Mono和Jexus并且部署ASP.NET MVC3、4、5和WebApi(跨平台)

1.开篇说明 a. 首先我在写这篇博客之前&#xff0c;已经在自己本地配置了mono和jexus并且成功部署了asp.net mvc项目&#xff0c;我也是依赖于在网上查找的各种资料来配置环境并且部署项目的&#xff0c;而其在网上也已有了很多这方面的文章&#xff0c;故而我就想我是写还是不…

10.操作系统演进过程

【README】 1.本文内容总结自 B站 《操作系统-哈工大李治军老师》的《操作系统的那棵树》&#xff0c;内容非常棒&#xff0c;墙裂推荐&#xff1b; 2.思维僵化与发散 the mind is not a vessel that needs filing, but wood that needs igniting. 头脑不是需要归档的容器&am…

Oracle入门(十二I)之误删除数据的恢复方法

转载自 oracle误删除数据的恢复方法今天主要以oracle数据库为例&#xff0c;介绍关于表中数据删除的解决办法。&#xff08;不考虑全库备份和利用归档日志&#xff09;删除表中数据有三种方法&#xff1a;delete&#xff08;删除一条记录&#xff09;drop或truncate删除表格中数…

Oracle入门(七A)之表空间配额(quota)

转载自 oracle表空间配额&#xff08;quota&#xff09;一、quota相关视图 1)dba_ts_quotas(查看所有用户的表空间配额) BYTES字段表示用户已经使用的空间&#xff1b;MAX_BYTES如果为-1表示没有限制&#xff0c;其他值表示限制配额 --只有用alter user user_name quota on tab…

python嵌套列表字典_python中嵌套列表转为字典

题目&#xff1a;# 有一组用例数据如下&#xff1a;cases [[case_id, case_title, url, data, excepted],[1, 用例1, www.baudi.com, 001, ok],[4, 用例4, www.baudi.com, 002, ok],[2, 用例2, www.baudi.com, 002, ok],[3, 用例3, www.baudi.com, 002, ok],[5, 用例5, www.ba…

.NET之全平台一体化的体验

一、前言 近来利用空闲时间研究了一下Xamarin的技术&#xff0c;想想既然提供了如此好的支持&#xff0c;就该尝试一切可能&#xff0c;来一个”大小通吃“。 何为全平台&#xff1a;APP包括Android、IOS、WP&#xff0c;WEB可在Window和Linux部署运行(进可攻&#xff0c;退可守…

11.cpu调度策略与schedule调度函数

【README】 1.本文内容总结自 B站 《操作系统-哈工大李治军老师》&#xff0c;内容非常棒&#xff0c;墙裂推荐&#xff1b; 2.cpu调度&#xff1a; 指的是 cpu从就绪队列中选择一个进程来执行&#xff1b;选择哪一个进程是调度算法的执行结果&#xff1b; 3. 相关定义&…

Oracle入门(十二)之SQL的DDL

一、数据类型 Character 数据类型Number 数据类型Date 数据类型Raw 和 Long Raw 数据类型 LOB 数据类型 注&#xff1a;Oracle数据类型详解二、表 &#xff08;1&#xff09;创建表 create table emp ( emp_id char (10) primary key, emp_name varchar2 (30), sal number (…

2016微软开发者峰会在京举办 纳德拉要来做演讲

还有不到一个月的时间&#xff0c;2016 微软开发者峰会就要在北京举办了。 在这场开发者的盛会上&#xff0c;微软 CEO、技术牛人&#xff0c;还有来自微软亚洲研究院、亚太研发集团、Xamarin 团队以及微软中国开发体验的专家们将对各平台的开发进行技术探讨。 据了解&#xff…

centos 卸载ffmpeg_Linux下ffmpeg的完整安装

最近在做一个企业项目, 期间需要将用户上传的视频转成flv格式或mp4格式并用flash插件在前端播放, 我决定采用ffmpeg (http://www.ffmpeg.org/ )实现. 当然以前也用过ffmpeg, 但是没有安装额外的库, 只是源代码下简单地 ./configure, 最后发现好多功能都用不了, 比如最流行的x26…

1.概率论-组合分析

【README】 本文总结自《概率论基础教程》 by M.Ross ,墙裂推荐; 【1.3】排列(考虑顺序) 1)例3d: 用6个字母 PEPPER排列,共有多少种不同的排列方式? 2)推理 对于n个元素,如果其中n1个元素相同,其他n2个元素相同,......,nr个元素也相同,一共有 种不同排列方式;…

Oracle入门(十二B)之表创建

一、创建表&#xff08;1&#xff09;简单表 Create Table emp (Emp_id char(10) primary key,Emp_name varchar2(30),Sal number(5),Tel varchar2(20) ); &#xff08;2&#xff09;带参数的表格创建 create table emp (emp_id char (10) primary key,emp_name varchar2 (30),…

我的创作纪念日:感恩、感谢、感激!

/bin/bash 机缘 感恩、感谢、感激&#xff01; 第一次进入到csdn&#xff0c;还是当初老师傅叫我们可以借鉴一下这里的文章 所以&#xff01; 一开始进入到csdn网站&#xff0c;还以为这里也是和某些贴吧一样&#xff0c;一样的灌水呢! 但是正式在这里书写文章之后&#…

python中seaborn画swarm图_Python可视化 | Seaborn5分钟入门(四)——stripplot和swarmplot

微信公众号&#xff1a;「Python读财」如有问题或建议&#xff0c;请公众号留言Seaborn是基于matplotlib的Python可视化库。 它提供了一个高级界面来绘制有吸引力的统计图形。Seaborn其实是在matplotlib的基础上进行了更高级的API封装&#xff0c;从而使得作图更加容易&#xf…

第四篇 Entity Framework Plus 之 Batch Operations

用 Entity Framework 进行 增&#xff0c;删&#xff0c;改。都是基于Model进行的&#xff0c;且Model都是有状态追踪的。这样Entity Framework才能正常增&#xff0c;删&#xff0c;改。 有时候&#xff0c;要根据某个字段&#xff0c;批量更新或者删除数据&#xff0c;用Ent…

2.概率论-概率论公理

【README】 本文总结自《概率论基础教程》 by M.Ross ,墙裂推荐; 【2.2】样本空间和事件 1)样本空间 所有可能的结果构成的集合,称为该实验的样本空间,记为S;2)事件(一个集合,或样本空间的子集) 样本空间的任一子集E称为事件;或样本空间中选取若干个结果构成的集合…

Oracle入门(十二C)之表修改

一、列操作 &#xff08;1&#xff09;添加列alter table 表名 add (列名 数据类型 [default 表达式], ..);alter table tableName add temp varchar2(30);&#xff08;2&#xff09;修改列A.修改列类型和属性alter table 表名 modify (列名 数据类型 [default 表达式], ..)…

在ThoughtWorks工作12年的技术主管,所总结的12条技术人经验

原文&#xff1a; 12 years, 12 lessons working at ThoughtWorks 作者&#xff1a; Patrick&#xff0c;ThoughtWorks的技术主管兼敏捷顾问 编译&#xff1a; 孙薇 本文作者在ThoughtWorks工作了12年之久&#xff0c; 回顾了往昔工作之后&#xff0c;他得出了12条经验心得&…

3.条件概率与独立性

【README】 本文总结自《概率论基础教程》 by M.Ross &#xff0c;墙裂推荐&#xff1b; 【3.2】条件概率 1&#xff09;条件概率定义&#xff1a; 【补充】条件概率计算示例 【3.3】贝叶斯公式 1&#xff09;通过第2个事件发生与否计算第1个事件的概率&#xff08;非常重要…

python安装运行时提示不是内部或外部命令怎么办_如何解决cmd运行python提示不是内部命令...

python安装完成后&#xff0c;直接运行python.exe能够正常执行python程序。但是进入到cmd命令窗口(同时按下winr组合键后输入cmd进入)&#xff0c;输入python命令提示“不是内部或外部命令”&#xff0c;遇到这种现象通常是没有将python的安装路径添加到环境变量中。在桌面上右…