list1 =[1,[2,[3,[4,[5,[6,[7,[8,[9,[10,[11,[12,[13,[14,]]]]]]]]]]]]]]defdisplay(list1):for i in list1:iftype(i)isint:print(i, end=' ')else:
display(i)
display(list1)
res =filter(lambda x: x >3,[1,2,3,4,5,6,7,8])print(list(res))# [4, 5, 6, 7, 8]
res =filter(lambda x: x %2,range(1,101))# x % 2 在这等同与 if x % 2 结果为0就被过滤print(list(res))# 奇数
res =filter(lambda x:not x %2,range(1,101))print(list(res))# 偶数
withopen('a.txt', mode='rt', encoding='utf8')as rf:
user_info = rf.readlines()print(user_info)# ['kid male 18 3000\n', 'qq male 19 30000\n', 'qaq female 18 20000\n', 'qz female 20 10000\n']# 去除\n 在切分
user_info =[i.strip('\n').split()for i in user_info]print(user_info)# [['kid', 'male', '18', '3000'], ['qq', 'male', '19', '30000'],# ['qaq', 'female', '18', '20000'], ['qz', 'female', '20', '10000']]# 字典的键
dic_key_list =['name','gender','age','salary']# zip
user_info =[dict(zip(dic_key_list, i))for i in user_info]print(user_info)"""
[
{'name': 'kid', 'gender': 'male', 'age': '18', 'salary': '3000'},
{'name': 'qq', 'gender': 'male', 'age': '19', 'salary': '30000'},
{'name': 'qaq', 'gender': 'female', 'age': '18', 'salary': '20000'},
{'name': 'qz', 'gender': 'female', 'age': '20', 'salary': '10000'}
]
"""# 2. 根据1得到的列表,取出所有人的薪资之和
saraly_list =[int(i.get('salary'))for i in user_info]print(saraly_list)# [3000, 30000, 20000, 10000] 不要直接sum 这是练习from functools importreduce
count =reduce(lambda x, y : x + y, saraly_list)print(count)# 63000# 3.根据1得到的列表,取出所有的男人的名字
male_list =[i.get('name')for i in user_info if i.get('gender')=='male']print(male_list)# 4.根据1得到的列表,将每个人的信息中的名字映射成首字母大写的形式
name_list =[i.get('name').capitalize()for i in user_info]print(name_list)# 5.根据1得到的列表,过滤掉名字以q开头的人的信息
filter_list =[i for i in user_info ifnot i.get('name').startswith('q')]print(filter_list)# 6. 根据1得到的列表,取出薪资最高的人的信息print(max(user_info, key=lambda dic: dic.get('salary')))# {'name': 'qq', 'gender': 'male', 'age': '19', 'salary': '30000'}# 把 user_info 一个个元素传进 匿名函数中 匿名函数把salary的值返回去做比较# 7.根据1得到的列表,取出最年轻的人的信息print(min(user_info, key=lambda dic: dic.get('age')))# 两个人年纪一样大的 显示第一个小的# {'name': 'kid', 'gender': 'male', 'age': '18', 'salary': '3000'}# 8.根据1得到的列表,给用户名加上_vip的后缀, 如 kid_vip[dic.update({'name': dic['name']+'_vip'})for dic in user_info]# 直接修改可变类型内的值print(user_info)
# 9. 求文件a.txt中最长的行的长度(长度按字符个数算,需要使用max函数)withopen('a.txt', mode='rt', encoding='utf8')as rf:
user_info = rf.readlines()print(user_info)# 去除\n , 每一行都有\n 去不去都不所谓
user_info =[i.strip('\n')for i in user_info]print(user_info)# ['kid male 18 3000', 'qq male 19 30000', 'qaq female 18 20000', 'qz female 20 10000']
dic =dict(enumerate(user_info, start=1))print(dic)# {1: 'kid male 18 3000', 2: 'qq male 19 30000', 3: 'qaq female 18 20000', 4: 'qz female 20 10000'}
line =max(dic, key=lambda key:len(dic[key]))print(f'第{line}行的字符数最多')# 3 第三行
# 10.求文件a.txt中总共包含的字符个数withopen('a.txt', mode='rt', encoding='utf8')as rf:
num =[len(i)for i in rf ]print(num)from functools importreduce
count =reduce(lambda x, y : x+y, num,0)print(count)
2.使用递归打印斐波那契数列(前两个数的和得到第三个数,如:1,2,3,5,8,13..)
defnum(x, y):if y >100:# 结束条件return# z = y# y = x + y# x = z
y, x = y + x, y
print(y, end=' ')# 1 2 3 5 8 13 21 34 55 89 144
num(x, y)
num(0,1)