XX学Python·总结和推导式

公共方法总结

  • +:有{}的都不行,即字典,集合

    • 适用所有基础数据类型(int float bool),容器类型只有列表,元组,字符串

    • 两侧要是同种数据类型

    • 加法运算在容器类型中是拼接的意思

  • ×:有{}不行,即字典,集合

    • 适用所有基础数据类型(int float bool),容器类型只有列表,元组,字符串

    • 容器类型只能与int类型相乘(乘负数和0就是空的容器)

    • 乘法就是将容器类型复制指定次数,并进行拼接

a = '爱你'
print(a * 3)  # 爱你爱你爱你
list1 = [1,2,3]
print(list1 * 2)  # [1, 2, 3, 1, 2, 3]
print(list1 * 0)  # []
print(list1 * -1)  # []
  • in和not in

    • 字符串,列表,元组,字典,集合都可以使用

    • 判断元素是否在容器内,该元素必须能保存到容器内。比如列表、字典、集合本身都无法用集合储存,同样不能作为字典的键。

    • 字典判断的是元素是否在key中,即是否为其中的键。

# 格式:元素 in 容器,返回布尔值
set1 = {3,'rose','jack'}
print(3 in set1)  # True
print('rose' not in set1)  # False
# 注意:判断的数据必须能够在集合中储存
# print([2,3] in set1)  # TypeError: unhashable type: 'list'
  • 切片

    • 字符串,列表,元组可以切片,格式[起始位置:终止位置:步长]

    • 集合和字典无法切片,因为不能使用索引获取数据

    • 所有切片都不会修改原有数据,而是产生一个新的数据序列

  • len()

    • 可以获得str,list,tuple,set中元素个数

    • 获得dict中键值对个数

    • 同等于:容器._ _ len _ (),比如print(len(list1)与print(list1. _ _ len _ _())相同

  • max min

    list、tuple、set、str可以使用max min获取容器内最大最小值,例如print(max(list1))

    dict是使用max和min获取键的最大最小值,例如print(max(dict1))

  • enumerate枚举

    • 所有容器和可迭代类型都可以使用enumerate(数据,起始序号)。

    • 获取容器里数据时添加序号,默认序号从0开始,此序号可以作为索引使用

    • 一般用在 for 循环当中,是(序号,值)组成的元组

    list1 = ['xx', 2, 'lsl']
    for i in enumerate(list1):
        print(i)
    '''结果如下
    (0, 'xx')
    (1, 2)
    (2, 'lsl')
    '''
    for index,value in enumerate(list1):
        print(index, value, sep=':')  # 用:进行分割
    '''结果如下
    0:xx
    1:2
    2:lsl
    '''
    # 字典中获取的是key
    dict1 = {'name': 'xx', 'age': 18}
    for i in enumerate(dict1):
        print(i)  # 如(0, 'name')
    for order_num, value in enumerate(dict1):  # order_num序号的意思
        print(order_num, value, sep=':')  # 获取的key,如1:age
    
    set1 = {'xx', 520, 'lsl'}
    for order_num, value in enumerate(set1):
        print(order_num, value, sep=':')  # 结果顺序不定
    

推导式

  • 列表推导式:[要插入的值 for 临时变量 in 数据序列 if 条件]

  • 集合推导式:

  • 字典推导式:

  • 所有推导式都可以用for循环改写,不熟练的时候可以采用

  • 没有元组和字符串推导式,因为其内部元素无法被修改

# 获取0到9的数据序列
# 使用while循环
list1 = []
i = 0
while i < 10:
    list1.append(i)
    i += 1
print(list1)  # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 使用for循环
list2 = []
for i in range(0, 10):
    list2.append(i)
print(list2)  # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 使用推导式
list3 = [i for i in range(10)]
print(list3)  # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

# 练习:使用推导式创建一个1-10的偶数数据序列
# 使用for
list4 = []
for i in range(1, 11):
    if i % 2 == 0:
        list4.append(i)
print(list4)  # [2, 4, 6, 8, 10]
# 推导式,注意和上面的for循环结构对应。
list5 = [i for i in range(1, 11) if i % 2 == 0]
print(list5)  # [2, 4, 6, 8, 10]

# 练习:用推导式打印九九乘法表,将所有算式放入列表中
# for循环打印没有放入列表中
for i in range(1,10):
    for j in range(1,i+1):
        print(f'{j}*{i}={i*j}', end=' ')
    print()
# for循环打印放入列表中
list11 = []
for i in range(1,10):
    for j in range(1,i+1):
        list11.append(f'{j}*{i}={i*j}')
print(list11)
# 推导式
list6 = [f'{j}*{i}={i*j}' for i in range(1, 10) for j in range(1, i+1)]
print(list6)

# 集合推导式和列表相同
set1 = {i for i in range(1, 11) if i % 2 == 0}
print(set1)  # {2, 4, 6, 8, 10}

# 字典推导式
keys = ['name', 'age']
values = ['xx', 18]
# 用for循环
dict1 = {}
for i in range(len(keys)):
    dict1[keys[i]] = values[i]
print(dict1)  # {'name': 'xx', 'age': 18}
# 用推导式
dict2 = {keys[i]: values[i] for i in range(len(keys))}
print(dict2)  # {'name': 'xx', 'age': 18}
posted @ 2022-10-04 22:55  PORTB  阅读(19)  评论(0编辑  收藏  举报