python中列表生成式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中列表生成式相关的知识,希望对你有一定的参考价值。

1.列表生成式
Python内置的一种极其强大的生成列表 list 的表达式。返回结果必须是列表。

格式:[ 变量表达式 for 变量 in 表达式 if 变量的判断条件(结果为True 或者False)]

#需求1:接收变量 k a b
常规写法:
s = ‘51 5000 10000‘
a = s.split()
print(a)
li = []
for item in s.split():
li.append(int(item))
print(li)
k,a,b = li
print(k,a,b)
列表生成式:
li = [int(item) for item in s.split()]
print(li)
k, a, b = li
print(k, a, b)

技术图片

需求2:生成一个列表,列表的元素分别为[11 22 9**9 ]

li = []
for i in range(1, 10):
li.append(i ** i)
print(li)

print([i ** i for i in range(1, 10)])

技术图片

找出1~10之间的所有偶数
print([i for i in range(1,11) if i %2 == 0])
#s1 = ‘ABC‘ s2=‘123‘ A1 A2 A3...C1 C2 C3
print([i + j for i in ‘ABC‘ for j in ‘123‘])

2.列表生成式变形之for循环

li = [
[1,2,3],
[4,5,6],
[7,8,9]
]
resli = []
for item1 in li: #[1,2,3] [4,5,6] [7,8,9]
for item2 in item1:
resli.append(item2)
print(resli)

print([item2 for item1 in li for item2 in item1])

from itertools import chain
print(list(chain(*li)))

技术图片

#1.找出1~10之间的所有偶数,并且返回一个列表(包含以这个偶数为半径的园的面积)
方法1:
import math
li = []
for r in range(2, 11, 2):
square = math.pi r r
li.append(square)
print(li)
方法2 :
print([math.pi r r for r in range(2, 11, 2)])
方法3:
def square(r):
"""
求以r为半径的圆
:param r:半径
:return:
"""
res = math.pi r r
return res
print([square(i) for i in range(2,11,2)])

技术图片

#找出1~100之间的所有素数 (列表生成式 + 函数)
def isPrime(num):
for i in range(2,num):
if num % i == 0:
return False
else:
return True

print([i for i in range(2,101) if isPrime(i)])
技术图片

  • 题目描述:
    给定一个正整数,编写程序计算有多少对质数的和等于输入的这个正整数,并输出结果。输
    入值小于1000。
    如,输入为10, 程序应该输出结果为2。(共有两对质数的和为10,分别为(5,5),(3,7))
    #[2,3,5,7]
  • 输入描述:
    输入包括一个整数n,(3 ≤ n < 1000)
  • 输出描述:
    输出对数
  • 示例1 :
    输入:
    10
    输出:
    2

#定义函数判断是不是质数
def isprime(x):
for i in range(2,x):
if x%i==0 :
return False
else:
return True
#将比给定的正整数小的所有质数存在列表中
N = int(input(‘N:‘))
small_prime = [ num for num in range(2,N) if isprime(num)]
#将可以相加等于该正整数的质数挑选出来
result = [ prime for prime in small_prime if N - prime in small_prime and prime <=N/2]
#输出得到的指定素数列表的长度 就是统计出的素数对的数量
print(len(result))

技术图片

以上是关于python中列表生成式的主要内容,如果未能解决你的问题,请参考以下文章

python列表生成式生成器,迭代器与二分法

python函数式编程,列表生成式

python列表生成式&生成器&迭代器

python学习笔记——列表生成式与生成器

python列表生成式应用案例

python笔记十(列表生成式生成器)