4、Python入门——数据容器的公共方法以及推导式


前言

  • 前面我们学习了字符串(str)、列表(list)、字典(dict)、元祖(tuple)还有集合(set),了解了它们的基本性质,今天我们继续学习这些数据容器的公共方法以及推导式。

一、数据容器的公共方法

  • 那我们哪些 运算符 或者 函数 能作用于所有的容器类型呢?下边我们一起来看看

1. 公共运算符

介绍

运算符含义支持的数据容器
+合并字符串,列表,元组
*复制字符串,列表,元组
in元素是否存在字符串,列表,元组,字典
not in元素是否不存在字符串,列表,元组,字典

in, not in 在操作字典的时候, 是作用于 键 的,下边也进行了演示

代码演示

"""
# 演示上述的 公共运算符.
# +   合并(拼接), 适用于: 字符串, 列表, 元组.
print('abc' + 'xyz')   				# abcxyz
print([1, 2, 3] + ['a', 'b', 'c'])  # [1, 2, 3, 'a', 'b', 'c']
print((1, 2, 3) + ('a', 'b', 'c'))  # (1, 2, 3, 'a', 'b', 'c')


# *   复制, 适用于: 字符串, 列表, 元组.
print('abc' * 2)      # abcabc
print([1, 2, 3] * 2)  # [1, 2, 3, 1, 2, 3]
print((1, 2, 3) * 2)  # (1, 2, 3, 1, 2, 3)


# in   是否包含, 适用于: 字符串, 列表, 元组, 字典.
print('a' in 'abc')             # True
print(10 in [1, 2, 3])          # False
print(10 in (10, 2, 3))         # True
print(10 in {10, 2, 3})         # True
print(10 in {1:2, 2:3, 10:5})   # True, 如果判断字典, 则判断的是: 键(key)
print(10 in {1:2, 2:3, 5:10})   # False, 如果判断字典, 则判断的是: 键(key)
print('-' * 30)

# not in   是否不包含, 适用于: 字符串, 列表, 元组, 字典.
print('a' not in 'abc')           # Flase
print(10 not in [1, 2, 3])        # True
print(10 not in (10, 2, 3))       # False
print(10 not in {10, 2, 3})       # False
print(10 not in {1:2, 2:3, 10:5}) # False
print(10 not in {1:2, 2:3, 5:10}) # True

2. 公共方法

介绍

函数函数功能简介
len()计算容器中元素个数
del 或 del()删除
max()返回容器中元素最大值
min()返回容器中元素最小值
range(star, end, step)生成从 start 到 end 的数字,步长为 step,供for循环使用
enumerate()函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。

1、 如果len()统计字典, 统计的是: 键值对的对数.
2. enumerate() 默认索引是从0开始的, 可以指定 起始索引.

代码演示

# 演示 len()  获取长度的
# 1. 字符串
s1 = 'abc'
print(len(s1))      # 3

# 2. 列表
print(len([1, 2, 3, 4, 5]))   # 5

# 3. 字典
print(len({'a': 1, 'b': 2, 'c': 3}))  # 3


# 演示 del    删除的
# 1. 字符串.
s1 = 'abc'
del s1
# print(s1) 会报错

# 2. 列表
list1 = [1, 2, 3, 4, 5]
del list1[0]
del (list1[2])
print(list1)   # [2, 3, 5]

# 3. 字典
dict1 = {'a': 1, 'b': 2, 'c': 3}
del dict1['a']
del (dict1['c'])
print(dict1)      # {'b': 2}

# 演示 max()        最大值
print(max('abcdefg'))       # g
print(max([1, 2, 3, 4, 5])) # 5
print(max((1, 2, 3, 4, 5))) # 5
print(max({1, 2, 3, 4, 5})) # 5
print(max({'a': 1, 'b': 2, 'c': 1})) # c 只针对于 键.

# 演示 min()        最小值
print(min('abcdefg'))       # a
print(min([1, 2, 3, 4, 5])) # 1
print(min((1, 2, 3, 4, 5))) # 1
print(min({1, 2, 3, 4, 5})) # 1
print(min({'a': 1, 'b': 2, 'c': 1}))# a 只针对于 键.

# 演示 range(start, end, step)      生成指定区间范围的值. 包左不包右.
range(1, 10, 2)  # 表示生成 1 到 10 的 奇数

print(range(1, 10, 2))  # 这个打印结果是range(1, 10, 2)  而不是 1,3,5, 7,9 ,因为range函数返回值

for i in range(1, 10, 2):
    print(i)    # 1,3,5, 7,9

print(list(range(1, 10, 2)))    # 把 range() => 列表. # [1, 3, 5, 7, 9]


# 演示 enumerate()  生成列表元素的: 索引 和 值.
list1 = ['a', 'b', 'c', 'd', 'e']

for i in list1:
    print(i)        # 'a', 'b', 'c', 'd', 'e', 它们的索引分别是: 0, 1, 2, 3, 4

# for i in enumerate(list1): 
	#print(i)   # 默认: 索引是从 0 开始的. # (0, 'a')(1, 'b')(2, 'c')(3, 'd')(4, 'e')

for i in enumerate(list1, 5):   # 指定 索引从 5 开始.
    print(i)        # 把列表元素和其索引封装成元组, 即: (索引, 值)
    # 打印结果 (5, 'a')(6, 'b')(7, 'c')(8, 'd')(9, 'e')

二、推导式

  • 推导式comprehensions(又称解析式),是Python的一种独有特性。
  • 推导式可以从一个数据序列构建另一个新的数据序列(一个有规律的列表或控制一个有规律列表)的结构体
分类
列表推导式: […]
集合推导式: {…}
字典推导式: {…}

1. 有没有元组推导式呢? 即: (...)-----有, 但是不叫元组推导式, 叫: 生成器(Generator), 我们在后边的章节再进行讲解
2. 推导式支持 循环嵌套 以及 条件筛选的动作.

1. 列表推导式

介绍

"""
格式:   [变量名 for 变量名 in ... if 条件...]
"""

代码演示

# 需求1: 创建1个 0 ~ 9的列表.
# 方式1: 不使用推导式.
list1 = []
for i in range(10):
    list1.append(i)
print(list1)       # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

# 方式2: 列表推导式.
list2 = [i for i in range(10)]      # 效果同上.
print(list2)      # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

# 方式3: 类型转换.
list3 = list(range(10))
print(list3)      # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
  

# 需求2: 创建1个 0 ~ 9的 偶数 列表.
# 方式1: 不使用推导式.
list1 = []
for i in range(10):
    if i % 2 == 0:
        list1.append(i)
print(list1)     # [0, 2, 4, 6, 8]

# 方式2: 列表推导式.
list2 = [i for i in range(10) if i % 2 == 0]      # 效果同上.
print(list2)     # [0, 2, 4, 6, 8]

# 方式3: 类型转换.
list3 = list(range(0, 10, 2))
print(list3)     # [0, 2, 4, 6, 8]


# 需求3: 创建列表 => [(1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
# 提示: 循环嵌套, i的值 1, 2    j的值 0, 1, 2
# 方式1: 普通版, 循环嵌套.
list1 = []
for i in range(1, 3):
    for j in range(3):
        # print((i, j))
        # 把 i 和 j 封装成元组.
        # tuple1 = (i, j)
        # list1.append(tuple1)
        list1.append((i, j))
print(list1)   # [(1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]

# 方式2: 列表推导式.
list2 = [(i, j) for i in range(1, 3) for j in range(3)]     # 效果同上.
print(list2)   # [(1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]

2. 字典推导式

代码演示

# 演示: 字典推导式
# 案例1: 创建1个字典, key是1~5, 值是这个数字的平方.
# 方式1: for, while 手动实现.
dict1 = {}
for i in range(1, 6):
    dict1[i] = i ** 2
print(dict1)   # {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

# 方式2: 字典推导式.
#         键值对
dict2 = {i : i ** 2 for i in range(1, 6)}
print(dict2)  # {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}


# 案例2: 将两个列表合并为1个字典.
list1 = ['name', 'age', 'gender']
list2 = ['Tom', 20, 'man']

# 方式1: for, while手动实现.
dict3 = {}
for i in range(len(list1)):     # i的值: 0, 1, 2
    # i 就是 列表中的每个元素的 索引, 把索引对应的值 添加到 字典中即可.
    dict3[list1[i]]  = list2[i]
print(dict3)  # {'name': 'Tom', 'age': 20, 'gender': 'man'}

# 方式2: 字典推导式.
dict4 = {list1[i] : list2[i] for i in range(len(list1))}    # i的值:0, 1, 2
print(dict4)  # {'name': 'Tom', 'age': 20, 'gender': 'man'}

3. 集合推导式

如果是集合推导式, 推导出来的集合 也是会自动去重的.

代码演示

# 演示: 集合推导式 => 默认具有 元素去重的功能.
# 1. 定义1个列表, 记录一些元素.
list1 = [1, 1, 2]

# 2. 集合推导式实现, 获取的元素值为 上述元素的平方结果.
set2 = {i ** 2 for i in list1}     # i的值: 1, 1, 2
print(set2)     # {1, 4}    因为集合默认会: 去重. 

总结

  • 以上就是今天要讲的内容,我们对数据容器的公共方法以及推导式进行了总结。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值