Python列表的生成 转载http://www.imooc.com/learn/177

要生成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]

但是循环太繁琐,而列表生成式则可以用一行语句代替循环生成上面的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创建出来

range(1, 100, 2) 可以生成list [1, 3, 5, 7, 9,...]

请利用列表生成式生成列表 [1x2, 3x4, 5x6, 7x8, ..., 99x100]

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

列表生成式的 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]

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

记住必须按照上面的格式来书写。if的条件过滤在最后

def toUppers(L):

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

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

复杂表达式

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

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

def generate_tr(name, score):

if score<60:

return ‘<tr><td>%s</td><td style="color:red">%s</td></tr>‘ % (name,score)

return ‘<tr><td>%s</td><td>%s</td></tr>‘ % (name, score)

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

print ‘<table border="1">‘

print ‘<tr><th>Name</th><th>Score</th><tr>‘

print ‘\n‘.join(tds)

print ‘</table>‘

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

时间: 2024-12-18 17:38:56

Python列表的生成 转载http://www.imooc.com/learn/177的相关文章

Python的索引迭代(转载http://www.imooc.com/learn/177)

Python中,迭代永远是取出元素本身,而非元素的索引. 对于有序集合,元素确实是有索引的.有的时候,我们确实想在 for 循环中拿到索引,怎么办? 方法是使用 enumerate() 函数: >>> L = ['Adam', 'Lisa', 'Bart', 'Paul'] >>> for index, name in enumerate(L): ... print index, '-', name ... 0 - Adam 1 - Lisa 2 - Bart 3 -

Python迭代dict的value转载http://www.imooc.com/learn/177

我们已经了解了dict对象本身就是可迭代对象,用 for 循环直接迭代 dict,可以每次拿到dict的一个key. 如果我们希望迭代 dict 对象的value,应该怎么做? dict 对象有一个 values() 方法,这个方法把dict转换成一个包含所有value的list,这样,我们迭代的就是 dict的每一个 value: d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 } print d.values() # [85, 95, 59] for v i

[转载] Python 列表(list)、字典(dict)、字符串(string)常用基本操作小结

创建列表 sample_list = ['a',1,('a','b')] Python 列表操作 sample_list = ['a','b',0,1,3] 得到列表中的某一个值 value_start = sample_list[0] end_value = sample_list[-1] 删除列表的第一个值 del sample_list[0] 在列表中插入一个值 sample_list[0:0] = ['sample value'] 得到列表的长度 list_length = len(sa

Python列表、元组、字典和字符串的常用函数

Python列表.元组.字典和字符串的常用函数 列表方法 1.ls.extend(object) 向列表ls中插入object中的每个元素,object可以是字符串,元组和列表(字符串“abc”中包含3个元组),相当于ls和object合并.注意:object如果是整型,必须以列表的方式传入,不可以以整型或元组的方式传入 2.ls.append(object) 将object作为一个整体插入到ls最后,object可以是字符串,元组,列表和字典 3.ls.insert(index, object

Python 列表(list)、字典(dict)、字符串(string)常用基本操作小结

[python] view plaincopy 创建列表 sample_list = ['a',1,('a','b')] Python 列表操作 sample_list = ['a','b',0,1,3] 得到列表中的某一个值 value_start = sample_list[0] end_value = sample_list[-1] 删除列表的第一个值 del sample_list[0] 在列表中插入一个值 sample_list[0:0] = ['sample value'] 得到列表

Python列表排序 reverse、sort、sorted 操作方法详解

reverse()方法 将列表中元素反转排序,比如下面这样>>> x = [1,5,2,3,4]>>> x.reverse()>>> x[4, 3, 2, 5, 1]reverse列表反转排序:是把原列表中的元素顺序从左至右的重新存放,而不会对列表中的参数进行排序整理.如果需要对列表中的参数进行整理,就需要用到列表的另一种排序方式sort正序排序. sort()排序方法 此函数方法对列表内容进行正向排序,排序后的新列表会覆盖原列表(id不变),也就是s

python 常用模块(转载)

转载地址:http://codeweblog.com/python-%e5%b8%b8%e7%94%a8%e6%a8%a1%e5%9d%97/ adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheetahcherrypy:一个WEB frameworkctypes:用来调用动态链接库DBUtils:数据库连接池django:一个WEB frameworkdocutils:用来写文档的dpkt:数据包的解包和组包My

[python01] python列表,元组对比Erlang的区别总结

数据结构是通过某种方式组织在一起的数据元素的集合,这些数据元素可以是数字,字符,甚至可以是其他的数据结构. python最基本的数据结构是sequence(序列):6种内建的序列:列表,元组,字符串,Unicode字符串,buffer对象和xrange对象. 对比归纳:列表,元组在Erlang与python中的区别: 1. 通用操作: Python的列表更像是C中的数组,但是比那更灵活,和Erlang的列表大有不同. 1.1 python列表索引从0开始并可以是负数.可以使用 >>>nu

python列表,元组

python列表: 列表的格式为: list=["index1","index2",1,2] #list为列表名,index1,index2,1,2为列表元素. 上面就是一个简单的列表,那如何获取,输出列表中的元素呢?: #列表每个元素都有个下标,根据下标进行获取列表中的元素值: list=["index1","index2",1,2] print(list[1]) index2    #打印结果 #列表元素下标从0开始计算,