【Python基础】7.2 列表生成式&练习

目录

 

1、生成一个列表,列表元素分别为[1**1 2**2 3**3 ... 9**9]

列表生成式里,还可以用if进行条件选择

2、生成一个列表,找出1-10内的偶数

3、生成一个列表,显示,a1,a2,a3,b1,b1,,,,c3

列表生成式里还可以用函数进行表达

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

5、用函数和列表表达式找出1-100内的所有素数

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

思路:

先写出判断素数的函数,并且找出所有的素数然后存到一个列表里

判断哪两个质数之和等于输入的数字,需要注意的是,有的两个一样的质数之和如果等于输入的数字,就会计算两遍

7、列表的字符串的大写改成小写,不是字符串的去掉

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

9、判断2-num之间有多少个质数


1、生成一个列表,列表元素分别为[1**1 2**2 3**3 ... 9**9]

之前,就会这样子解题:

l = [] 
for i in range(1, 10): 
    l.append(i ** i) 
print(l)
用列表生成式
 print([i ** i for i in range(1, 10)])

列表生成式里,还可以用if进行条件选择

2、生成一个列表,找出1-10内的偶数

方法1:

print([i for i in range(1, 11) if i % 2 == 0])
方法2:
print([i for i in range(2, 11, 2)])

3、生成一个列表,显示,a1,a2,a3,b1,b1,,,,c3

 print([i + j for i in 'abc' for j in '123'])

列表生成式里还可以用函数进行表达

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

import math

方法1:

print([math.pi * i * i for i in range(1, 11) if i % 2 == 0])
方法2:用函数进行解答

def square(r):
    res = math.pi * r * r
    return res


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

5、用函数和列表表达式找出1-100内的所有素数

def find(num):
    for i in range(2, num):
        if num % i == 0:
            return False
    else:
        return True


print([p for p in range(2, 101) if find(p)])

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

思路:

  1. 先写出判断素数的函数,并且找出所有的素数然后存到一个列表里

  2. 判断哪两个质数之和等于输入的数字,需要注意的是,有的两个一样的质数之和如果等于输入的数字,就会计算两遍

    def isprime(num):                               #该函数的作用是,判断一个数字是否是质数
        for i in range(2, num):
            if num % i == 0:
                return False
            elif num == 2:
                return True
        else:
            return True
     
     
    list = [i for i in range(2, 1000) if isprime(i)] #将1-1000的质数存入到列表里
     
    n = int(input("输入:"))
    num = 0
    for i in list:
        if n - i in list and i <= n - i:          #进行题目的判断
            num += 1                        #根据质数1+质数2=输入的数  可以想到两种算法
    print('输出:')                           #在这里我用了最简单的一种,就是判断number-质数的值
    print(num)                             #是否在列表里存在,此时只需要一个循环

     

7、列表的字符串的大写改成小写,不是字符串的去掉

li = ['hello','Wrold',16,17,18,12.3,False,'Apple']

思路:先进行判断,所有的元素是否是字符串,然后进行小写的转换

s = ['hello','Wrold',16,17,18,12.3,False,'Apple']
s1=[ i.lower() for i in s if isinstance(i,str)] 
               #instance(i,str)  用来判断i是否是字符串,是的话返回True
print(s1)

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

思路:调用os模块,列出目录下的文件名字,然后用endswith找出以.log结尾的文件

import os
print([filename for filename in os.listdir('/var/log') if filename.endswith('.log')])

9、判断2-num之间有多少个质数

num=int(input("请输入数字:"))
def find(num):
    for i in range(2,num):
        if num%2==0:
            return False
    else:
        return True
print(len([ i for i in range(2,num+1) if (find(i))]))  
 
#用len计算列表的长度

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值