【菜鸟学Python】列表推导式

列表推导式

推导式格式

[表达式 for 变量 in 列表]
[表达式 for 变量 in 列表 if 条件]

第一种语法:

首先迭代列表中所有内容,每一次迭代,都把列表中相应内容放到变量中,再在表达式中应用该iter_var的内容,最后用表达式的计算值生成一个列表

举例:

打印1到10之间的数字

常规操作:

# 使用for打印
for i in range(1, 10):
    print(i)

# 输出如下:
for i in range(1, 11):
    print(i)

1
2
3
4
5
6
7
8
910

列表推导式:

# 推导式格式[表达式 for 变量 in 列表]In [8]: [i for i in range(1, 11)]
Out[8]: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

第二种语法:

加入了判断语句,只有满足条件的内容才把列表中相应内容放到变量中,再在表达式中应用该变量的内容,最后用表达式的计算值生成一个列表。

举例:

打印1到10之间的偶数

常规打印的方法

In [9]: for i in range(1, 11):
   ...:     if i % 2 == 0:
   ...:         print(i)
   ...:
2
4
6
8
10

使用列表推导式的方法

# 条件推导式格式 [表达式 for 变量 in 列表 if条件]

In [10]: [i for i in range(1, 11) if i % 2 == 0]
Out[10]: [2, 4, 6, 8, 10]

练习题:

1、使用推导式打印1到100间奇数

# 条件推导式格式 [表达式 for 变量 in 列表 if条件]

In [12]: number = [i for i in range(1, 101) if i % 2 != 0]

In [13]: print(number)
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99]

2、打印出1-100之间除了含7和7的倍数之外的所有数字

# 条件推导式格式 [表达式 for 变量 in 列表 if条件]

In [14]: number = [i for i in range(1, 99) if (i % 7) == 0 or (i % 10) == 7 or (i // 10) == 7]

In [15]: print(number)
[7, 14, 17, 21, 27, 28, 35, 37, 42, 47, 49, 56, 57, 63, 67, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 84, 87, 91, 97, 98]

3、使用推导式打印1到999之间的水仙花数

# 条件推导式格式 [表达式 for 变量 in 列表 if条件]

In [16]: number =  [i for i in range(1, 1000) if ((i // 100) ** 3 + (i % 100 // 10) ** 3 + (i % 10) ** 3) == i]

In [17]: print(number)
[1, 153, 370, 371, 407]

原文地址:https://www.cnblogs.com/liduo0413/p/11130867.html

时间: 2024-10-09 00:17:55

【菜鸟学Python】列表推导式的相关文章

python 列表推导式----轻量级循环

列表推导式(list comprehension)是利用其他列表创建新列表(类似于数学术语中的集合推导式)的一种方法.它的工作方式类似于for循环,也很简单: In [39]: [x*x for x in range(10)]Out[39]: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] 如果只想打印出那些能被3整除的平方数,只需要通过添加一个if部分在推导式中就可以完成: In [41]: [x*x for x in xrange(10) if x % 3 == 0

python(列表推导式和生成器表达式)

从母鸡下蛋的故事讲起 1 老母鸡 = ('鸡蛋%s'%i for i in range(10)) 2 print(老母鸡) 3 for 蛋 in 老母鸡: 4 print(蛋) 5 g = (i*i for i in range(10)) 6 for i in g: 7 print(i) ①把列表解析的[]换成()得到的就是生成器表达式 ②列表解析与生成器表达式都是一种便利的编程方式,只不过生成器表达式更加节省内存空间 ③Python不但使用迭代器协议,让for循环变得更加通用.大部分内置函数,

python 列表推导式 题二

补写list3被涂改的内容 结果如下: 1 list1 = ["1.Just do it", "2.一切皆有可能", "3.让编程改变世界", "Impossible is Nothing"] 2 list2 = ["4.阿迪达斯", "2.李宁", "3.python", "1.耐克"] 3 list3 = [name + ":&quo

python列表推导式中使用if-else

今天在处理自动化邮件数据时碰到数据行中包含字符串后,从hive中拿到的整数型数据自动转化成了浮点数,严重影响美观性.因此想到了用列表推导式来做转化,将其中的数字型数据全部转化为整型,而字符型数据保留原样. 列表推导式总共有两种形式: ①[x for x in data if condition] 此处if主要起条件判断作用,data数据中只有满足if条件的才会被留下,最后统一生成为一个数据列表 ②[exp1 if condition else exp2 for x in data] 此处if..

python 列表推导式

squares = [x**2 for x in range(10)] 相当于squares = map(lambda x: x**2, range(10)),但是更简洁和易读.傻逼才会用最古老的for循环方法去做这样的事情. 列表推导式由括号括起来, 括号里面包含一个表达式, 表达式后面跟着一个for语句, 后面还可以接零个或更多的for或if语句. 结果是一个新的列表, 由表达式依据其后面的for和if子句上下文计算而来的结果构成. 例如, 下面的 listcomp 组合两个列表中不相等的元

python列表推导式

1.形式 [表达式 for 变量 in 列表]    或者  [表达式 for 变量 in 列表 if 条件] 2.demo #!/usr/bin/python # -*- coding: utf-8 -*- li = [1,2,3,4,5,6,7,8,9] print [x**2 for x in li] print [x**2 for x in li if x>5] print dict([(x,x*10) for x in li]) print  [ (x, y) for x in ran

使用python列表推导式进行99乘法表

首先这很python for i in range(1, 10): print(" ".join(["%d*%d=%d" % (j, i, i*j) for j in range(1, i+1)])) 详解 for i in range(1, 10): #当i == 1时: print(" ".join(["%d*%d=%d" % (j, i, i*j) for j in range(1, i+1)])) a ["%

python 3列表推导式的的一点理解!

Python的列表推导式对于新手来说一般都难以理解,简单看个例子: [x * x for x in range(1,100)] 上面是一个很简单的列表推导式,我的理解方式是从右往左看. 一点一点来看吧,我们先用range(1,100)生成一个迭代器对象(1-99的列表),然后再迭代这个列表的每一个对象,然后让每个对象执行一次平方操作,最后生成一个列表. -----------------------------分割线----------------------------------------

Python的列表推导式

1.列表推导式书写形式: [表达式 for 变量 in 列表]    或者  [表达式 for 变量 in 列表 if 条件] 2.举例说明: #!/usr/bin/python # -*- coding: utf-8 -*- li = [1,2,3,4,5,6,7,8,9] print [x**2 for x in li] print [x**2 for x in li if x>5] print dict([(x,x*10) for x in li]) print [ (x, y) for