Python--列表生成式

一.列表生成式
是Python中内置的一种生成列表的表达式,返回值必须为列表
二.列表的应用
1.接收变量,将字符串s = '51 5000 10000’转变为三个整数,并被接收
(1)for循环

s = '51 5000 10000'
list  = []  ##建立空列表
a = s.split()
for i in a:
    list.append(int(i))  ##生成新列表
print(list)
k,a,b = list  ##列表里的元素被变量吸收
print(k,a,b)

(2)列表生成式

list = [int(i) for i in s.split()]  ##生成新列表
print(list)
k,a,b = list
print(k,a,b)

2.生成一个列表,列表的元素分别为[11 22 99 ]**
(1)for循环

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

(2)列表表达式

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

3.找出1~10之间的所有偶数

li  = [i for i in range(2,11,2)]
print(li)

4.s1 = ‘ABC’ s2=‘123’ 输出 A1 A2 A3…C1 C2 C3

s1 = 'ABC'
s2 = '123'
li = [i+k for i in s1 for k in s2]
print(li)

5.找出1~10之间的所有偶数,并且返回一个列表(包含以这个偶数为半径的园的面积)
(1)for循环

import math
list = []
for i in range(2,11,2):
    area = math.pi*i**2
    list.append(area)
print(list)

(2).列表生成式

list = [math.pi*i**2 for i in range(2,11,2)]
print(list)

(3)函数

def fun(r):
    area = math.pi*r**2
    return area
print([fun(r) for r in range(2,11,2)])

6.list1 = [[1,2,3],[4,5,6],[7,8,9]],将其改变成:li = [1,2,3,4,5,6,7,8,9]
(1)for循环

list1 = [[1,2,3],[4,5,6],[7,8,9]]
list = []
for i in list1:
    for k in i:
        list.append(k)
print(list)

(2)列表生成式

print([k for i in list1 for k in i])

(3)内置函数chain,其参数为任意个序列 返回值为所有序列中的所有元素

from itertools import chain
list2 = list(chain(*list1))
print(list2)

7.找出1~100之间的所有素数 (列表生成式 + 函数)

def fun(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 fun(i)])

8.找出/var/log目录中,所有以.log结尾的文件名或者目录名

import os  ##获取os模块,模块可以实现linux中的命令功能
filename = [name for name in os.listdir('/var/log') if name.endswith('.log')]
print(filename)
['yum.log', 'Xorg.1.log', 'boot.log', 'Xorg.0.log', 'wpa_supplicant.log']

9.列表的字符串的大写改成小写,不是字符串的去掉
isinstance(变量,数据类型) #判断变量是不是该数据类型,是的话返回Ture,不是返回False

li = ['hello','WESTOS',2,5,9,18,23.7,False,'Hello']
list = [s.lower() for s in li if isinstance(s,str)]
print(list)
['hello', 'westos', 'hello']

三.习题测试
1.对于一个十进制的正整数, 定义f(n)为其各位数字的平方和,如:
f(13) = 12 + 32 = 10; f(207) = 22 + 02 + 72 = 53,下面给出三个整数k,a, b,你需要计算有多少个正整数n满足a<=n<=b,且k*f(n)=n
输入:第一行包含3个正整数k,a, b, k>=1, a,b<=10
18, a<=b;
输出:输出对应的答案;
范例:输入:51 5000 10000 输出: 3

def f(n):  ##定义各位数字的平方和
    sum = 0
    while n>0:
        x = n%10
        n = n//10
        sum+=x**2
    return sum
in_put = [ int(i) for i in input(':').split() ]  ##将输入的字符串转化为整型并放入列表中
out_put = [ i for i in range(in_put[1],in_put[2]) if in_put[0]*f(i)==i ]  ##将满足条件的数字输出至一个列表中
print(out_put)
print(len(out_put))

输出结果:

:51 5000 10000
[7293, 7854, 7905]
3

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

num = int(input('N:'))
def fun(num):
    for i in range(2,num):
        if num%i == 0:
            return False
    else:
            return True
list = [i for i in range(1,1000) if fun(i)]  ##找出所有的质数并放在列表里
# print(list)

(1)for语句

count = 0
for m in list:
    for n in list:
        if m+n == num and n <= m  ##判断在数字num内,有多少质数的和等于num
            count+=1
print(count)

(2)列表生成式

count = 0
for m in list:
    if (num-m) in list and m>=num -m:
        count+=1
print(count)
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值