1.列表生成式
# 需求1:接收变量k a b
s = '51 5000 10000'
# li = []
# for item in s.split():
# li.append(int(item))
# 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:生成一个列表 列表元素分别为[1**1 2**2 #**3...n**n]
# li = []
# for i in range(1,8):
# li.append(i**i)
# print(li)
li = [i ** i for i in range(1, 8)]
print(li)
li = [i ** i for i in range(1, 8) if i % 2 == 0]
print(li)
# 找出1~10之间的所有偶数
print([i for i in range(1, 11) if i % 2 == 0])
# s1 ='ABC' s2='123'
# A1 A2 A3 B1 B2 B3 C1 C2 C3
print([i + j for i in 'ABC' for j in '123'])
2.列表生成式变形之for循环
"""
[
[1,2,3],
[4,5,6],
[7,8,9]
]
[1,2,3,4,5,6,7,8,9]
"""
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)))
3.列表生成式练习
1. 找出1~10之间的所有偶数,并且返回一个列表(包含以这个偶数为半径的园的面积)
import math
# 方法1
# 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为半径的圆"""
# res = math.pi *r *r
# return res
# print([square(r) for r in range(2,11,2)])
# 找出1~100之间的所有质数(函数+列表生成式)
"""
2. 什么是质数:只能被1和本身整除的书就是质数
判断num是否是质数 如果是质数就返回True 否则返回False
"""
# 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)])
3. 将列表的字符串的大写改成小写,不是字符串的就去掉
# li = ['hello','World',18,12.3,False,'Apple']
# print([s.lower() for s in li if isinstance(s,str)])
4. 找出/var/log目录中,所有以.log结尾的文件名或者目录名
import os
#print(os.listdir('/var/log'))
print([filename for filename in os.listdir('/var/log') if filename.endswith('.log')])
4.字典生成式
# 需求1:假设有20个学生 学生分数在60~100之间,筛选出成绩在90分以上的学生
import random
stuInfo = {}
for i in range(20):
name = 'westos' + str(i)
score = random.randint(60, 100)
stuInfo[name] = score
print(stuInfo)
# highscore = {}
# for name,score in stuInfo.items():
# if score > 90:
# highscore[name] = score
# print(highscore)
# print({name:score for name,score in stuInfo.items() if score >90})
# 需求2:将所有的key值变为大写
# d =dict(a=1,b=2)
# print(d)
# new_d = {}
# for i in d:
# new_d[i.upper()] = d[i]
# print('key转换为大写的字典:',new_d)
# print({k.upper():v for k,v in d.items()})
# 需求3:大小写key值合并 统一以小写输出
d = dict(a=1, b=2, c=2, B=9, A=10)
# a=11 b=11 c=2
# new_d = {}
# for k,v in d.items():
# low_k = k.lower()
# if low_k not in new_d:
# new_d[low_k] = v
# else:
# new_d[low_k] += v
#
# print(new_d)
print({k.lower(): d.get(k.lower(), 0) + d.get(k.upper(), 0) for k in d})