python推导式基础用法

1. 推导式简介

推导式是一种可高效创建列表、字典、集合及其他可迭代对象的方式。以下将用推导式对多种可迭代对象进行创建。

2. 推导式创建列表

2. 1 复制列表中的元素到新的列表

list1 = [1, 2, 3, 4, 5, 6, 7, 8]
# 常规代码形式
list2 = []
for i in list1:
    list2.append(i)
print(list2)

# 推导式形式
list2 = [i for i in list1]
print(list2)

运行结果如下图所示:

32ca01662a014a189bac36a697bd6262.jpeg

2.2 对列表元素进行修改:将列表中的所有元素都乘3

list1 = [1, 2, 3, 4, 5, 6, 7, 8]
# 常规代码形式
list2 = []
for i in list1:
    i = i * 3
    list2.append(i)
print(list2)

# 推导式形式
list2 = [i * 3 for i in list1]
print(list2)

运行结果如下图所示:

5f01efaad986410e878af1d07332b326.jpeg2.3 对列表元素进行筛选及修改:筛选出所有的偶数、能被3整除的数并取其平方

list1 = [1, 2, 3, 4, 5, 6, 7, 8]
# 常规代码形式
list2 = []
for i in list1:
    if i % 2 == 0 or i % 3 == 0:
        list2.append(i ** 2)
print(list2)

# 推导式形式
list2 = [i**2 for i in list1 if i % 2 == 0 or i % 3 == 0]
print(list2)

 运行结果如下图所示:

7495c11520864155b8cc58a2449b9aa2.jpeg

2.4 涉及到 else 的推导式写法

当循环语句中仅包含 if 语句时直接将 if 语句及内容写在 for 语句后面即可,但当涉及到 else 时需要将 if ,else 语句写在 for 语句前面。(其实本质上就是三目运算符)

list1 = [1, 2, 3, 4, 5, 6, 7, 8]
# 常规代码形式
list2 = []
for i in list1:
    if i % 2 == 0 or i % 3 == 0:
        list2.append(i ** 2)
    else:
        list2.append(0)
print(list2)

# 推导式形式
list2 = [i**2 if i % 2 == 0 or i % 3 == 0 else 0 for i in list1]
print(list2)

运行结果如下图所示:

19292d31bd8742109ec368329b9dadfc.jpeg

 2.5 以元组形式存储两个列表,并对其元素进行筛选及改变

list1 = [1, 2, 3]
list2 = ['A', 'B', 'C']
# 常规代码形式
list3 = []
for i in list1:
    for j in list2:
        if i % 2 == 0:
            list3.append((i ** 2, j))
print(list3)

# 推导式形式
list3 = [(i ** 2, j) for i in list1 for j in list2 if i % 2 == 0]
print(list3)

运行结果如下图所示:

9d16f9b1489f4badbe59a0bbfc354bac.jpeg

3. 推导式创建字典

3.1 利用推导式将两个列表创建为一个字典

list1 = [1, 2, 3, 4, 5, 6, 7, 8]
list2 = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']
# 常规代码形式
dict1 = {}
# list(zip('abcdefg', range(3), range(4)))
# [('a', 0, 0), ('b', 1, 1), ('c', 2, 2)]
list_zip = zip(list1, list2)  # list_zip 是一个可迭代对象
for ele1, ele2 in list_zip:
    dict1[ele1] = ele2
print(dict1)

# 推导式形式
list_zip = {ele1: ele2 for ele1, ele2 in zip(list1, list2)}
print(list_zip)

运行结果如下图所示:

bb4abb13f9344c328af357f3dfd1a1e7.jpeg

 4. 推导式创建集合

集合特点:无序,唯一(不存在重复元素),所以可以用来快速去除重复元素

list1 = [1, 2, 2, 2, 5, 6, 8, 8]
# 常规代码形式
set1 = set()
for i in list1:
    set1.add(i)
print(set1)

# 推导式形式
set1 = {i for i in list1}
print(set1)

运行结果如下图所示: 

d6fa70000e59467aa000db8fbafa86cb.jpeg

 

 

 

 

 

 

  • 8
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值