前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Day14:练习题参考答案-高阶函数和迭代器

Day14:练习题参考答案-高阶函数和迭代器

作者头像
MegaQi
发布2023-10-21 19:39:51
1690
发布2023-10-21 19:39:51
举报

练习1级 - 基础回顾知识点 略 -

2.1 使用 map 实现countries列表中项全部转大写,然后返回一个新的列表并打印
代码语言:javascript
复制
countries = ['Estonia', 'Finland', 'Sweden', 'Denmark', 'Norway', 'Iceland']
def change_upper(country):
    return country.upper()
upper_countries = list(map(change_upper, countries))
print(upper_countries)
2.2 使用 map 实现numbers列表中的平方计算,并返回新的列表
代码语言:javascript
复制
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
def calculate_square(num):
    return num * num
squares = list(map(calculate_square, numbers))
print(squares)  
2.3 使用 map 将names列表转大写
代码语言:javascript
复制
names = ['Asabeneh', 'Lidiya', 'Ermias', 'Abraham']
upper_names = map(lambda name: name.upper(), names)
print(list(upper_names))
2.4 使用 filter 过滤掉 countries 列表中含有 land 关键词的国家
代码语言:javascript
复制
countries = ['Estonia', 'Finland', 'Sweden', 'Denmark', 'Norway', 'Iceland']
filter_countries = filter(lambda name: 'land' not in name, countries)
list_country = list(filter_countries)
print("原国家数据:", countries)
print("去除含land的数据:", list_country)
2.5 使用 filter 过滤出 countries 列表中项字符串长度正好是6个的国家
代码语言:javascript
复制
countries = ['Estonia', 'Finland', 'Sweden', 'Denmark', 'Norway', 'Iceland']
def len_six(country):
    if len(country) == 6:
        return True
    return False
six_countries = filter(len_six, countries)
print("长度等于6的新列表:", list(six_countries))
2.6 使用 filter 过滤出 countries 列表中国家字符长度大于6个项
代码语言:javascript
复制
countries = ['Estonia', 'Finland', 'Sweden', 'Denmark', 'Norway', 'Iceland']
more_six_list = list(filter(lambda c: len(c)>6, countries))
print("字符大于6的国家:",more_six_list)
2.7 使用 filter 过滤出 countries 列表中项以字符 E 开头的国家
代码语言:javascript
复制
countries = ['Estonia', 'Finland', 'Sweden', 'Denmark', 'Norway', 'Iceland']
def start_e(country):
    if country.startswith('E'):
        return True
    return False
e_countries = filter(start_e, countries)
print("字符E开头的国:", list(e_countries))
2.8 练习使用两个或多个方法内置高阶函数
代码语言:javascript
复制
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

def map_square(num):
    return num ** 2

def filter_even(num):
    if num % 2 == 0:
        return True
    return False

chain = filter(filter_even,  list(map(map_square, numbers)))
print("连续使用多个高阶内置函数:", list(chain))
2.9 声明一个名为 get_string_lists 的函数,该函数接受一个列表作为参数,然后返回一个仅包含字符串项的列表
代码语言:javascript
复制
def get_string_lists(item):
    if type(item) is str:
        return True
    return False
print("过滤字符串列表:", list(filter(get_string_lists, [1, "Maga", "2", 3, "Qi", 4])))
2.10 使用 reduce 对 numbers 列表中的所有数字求和
代码语言:javascript
复制
from functools import reduce
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print("列表求和:", reduce(lambda x, y: x+y, numbers))
2.11 用 reduce 将所有的国家连在一起,最终形成句子:爱沙尼亚、芬兰、瑞典、丹麦、挪威和冰岛都是北欧国家
代码语言:javascript
复制
from functools import reduce
countries = ['Estonia', 'Finland', 'Sweden', 'Denmark', 'Norway', 'Iceland']
def join_country(c1, c2):
    return f'{c1}、{c2}'
link_country = reduce(join_country, countries) + ' is Nordic countries'
print("集合国家:", link_country)
3.1 按国家名称、首都和人口数量对其进行排序
代码语言:javascript
复制
import os
import json

path_data = os.getcwd() + "\data\countries_data.json"  # 配置数据文件路径

with open(path_data, mode='r') as f:  #  打开文件并用json加载数据
    countries = json.load(f)

# print(sorted(countries, key=lambda item: item['name'], reverse=True)) # 利用内置高阶函数sorted根据每一项单按名字排序
print(sorted(countries, key=lambda c: (c['name'], c['capital'], c['population'])))  # 多关键词依次排序
3.2 选出十个人口最多的国家
代码语言:javascript
复制
population_sort = sorted(countries, key=lambda item: item['population'], reverse=True) # 先按人口关键词大-小排序
print("人口最多前十国家:",[country["name"] for country in population_sort[:10]]) # 分片取出前十,再用列表推导式取出国家名字
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-01-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 非典型性程序员 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 2.1 使用 map 实现countries列表中项全部转大写,然后返回一个新的列表并打印
  • 2.2 使用 map 实现numbers列表中的平方计算,并返回新的列表
  • 2.3 使用 map 将names列表转大写
  • 2.4 使用 filter 过滤掉 countries 列表中含有 land 关键词的国家
  • 2.5 使用 filter 过滤出 countries 列表中项字符串长度正好是6个的国家
  • 2.6 使用 filter 过滤出 countries 列表中国家字符长度大于6个项
  • 2.7 使用 filter 过滤出 countries 列表中项以字符 E 开头的国家
  • 2.8 练习使用两个或多个方法内置高阶函数
  • 2.9 声明一个名为 get_string_lists 的函数,该函数接受一个列表作为参数,然后返回一个仅包含字符串项的列表
  • 2.10 使用 reduce 对 numbers 列表中的所有数字求和
  • 2.11 用 reduce 将所有的国家连在一起,最终形成句子:爱沙尼亚、芬兰、瑞典、丹麦、挪威和冰岛都是北欧国家
  • 3.1 按国家名称、首都和人口数量对其进行排序
  • 3.2 选出十个人口最多的国家
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档