栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

列表,字典,集合推导式:让你快速学会Python中的推导式

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

列表,字典,集合推导式:让你快速学会Python中的推导式

上次发了一个一行代码,是利用推导式做的,有同学想要快速学会推导式。

这不就来了!!

下面是当时学习的时候一些笔记和自己造的练习例子。

# 列表推导式  字典推导式  集合推导式
"""
列表推导式:格式: [表达式 for 变量 in 旧列表] 或者 [表达式 for 变量 in 旧列表 if 条件]
格式1:[表达式 for i in 可迭代的]
格式2:[表达式 for i in 可迭代的 if 条件]
"""
list1 = [i for i in range(1, 21)]
print(list1)

list1 = [i + 2 for i in range(1, 10)]
print(list1)

list1 = [i for i in range(0, 43, 3)]  # 0-42之间3的倍数
print(list1)

list1 = [i + 2 for i in range(0, 101, 2) if i % 3 == 0]
print(list1)


list2 = ['20', 'hello', '30', 'word', 'ok', '60', 'hi', 'Her']
list3 = [i for i in list2 if i.isalpha()]
print(list3)

list4 = [i.capitalize() for i in list2 if i.startswith('h') or i.startswith('H')]
print(list4)

list5 = [i.capitalize() if i.startswith('h') or i.startswith('H') else i.upper() for i in list2]
print(list5)


# 实现:[1,2,3,...100]-->[[1,2,3],[4,5,6],[7,8,9],...]
list6 = [i for i in range(1, 101)]
list6_1 = [list6[i:i + 3] for i in range(0, len(list6), 3)]
print(list6_1)


# name=[['Tom','Billy',Jefferson','Andrew','Wesley','Steven','Joe',],['Alice','Jill','Ana','Wendy','Jennifer','Sherry','Eva']]
# 选出含有两个‘e’的名字
name = [['Tom', 'Billy', 'Jefferson', 'Andrew', 'Wesley', 'Steven', 'Joe', ],
        ['Alice', 'Jill', 'Ana', 'Wendy', 'Jennifer', 'Sherry', 'Eva']]
Two_e_name = [j for i in name for j in i if j.count('e') == 2]
print(Two_e_name)

# 字典-->列表
dict1 = {'name': 'tom', 'salary': 5000}
dict2 = {'name': 'lucy', 'salary': 8000}
dict3 = {'name': 'jack', 'salary': 4500}
dict4 = {'name': 'lily', 'salary': 3000}

list1 = [dict1, dict2, dict3, dict4]  # [{},{},{},{}]


# if薪资大于5000加200,低于等于5000加500
new_list = [employee['salary'] + 200 if employee['salary'] > 5000 else employee['salary'] + 500 for employee in list1]
print(new_list)

a = map(lambda employee: employee['salary'] + 200 if employee['salary'] > 5000 else employee['salary'] + 500, list1)
print('---->', list(a))

new_list = [{'name': person['name'], 'salary': person['salary'] + 200} if person['salary'] > 5000
            else {'name': person['name'], 'salary': person['salary'] + 500}
            for person in list1]
print(new_list)


"""
集合推导式  {}类似列表推导式,在列表推导式的基础上添加了一个去除重复项
"""
list1 = [1, 2, 1, 3, 5, 2, 1, 8, 9, 8, 9, 7]
set1 = {x - 1 for x in list1 if x > 5}
print(set1)


"""
字典推导式
"""
dict1 = {'a': 'A', 'b': 'B', 'c': 'C', 'd': 'C'}
new_dict = {value: key for key, value in dict1.items()}
print(new_dict)

简单分享一下

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/283265.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号