Python-day3:三元运算、编码解码、列表

# 2021年11月29日,第二周5~8
# !/usr/bin/env python
# -*- coding: utf-8 -*-
import copy
import random


def day3_case1():
    # 三元运算
    a, b = random.randint(1, 10), random.randint(1, 10)
    number_max = a if a > b else b  # 三元运算:result = 值1 if 条件 else 值2
    # 如果条件为真:result = 值1
    # 如果条件为假:result = 值2
    print("a=%d,b=%d,number_max=%d" % (a, b, number_max))


def day3_case2():
    # 编码解码
    msg = "你好呀"
    print(msg)
    print(msg.encode('gbk'))  # gbk编码
    print(msg.encode('utf-8'))  # utf-8编码
    msg1 = b'\xe4\xbd\xa0\xe5\xa5\xbd\xe5\x91\x80'
    # msg1 = b'\xc4\xe3\xba\xc3\xd1\xbd'
    print(msg1.decode('utf-8', errors="解码失败"))  # utf-8解码
    msg1 = b'\xc4\xe3\xba\xc3\xd1\xbd'
    print(msg1.decode('gbk', errors="解码失败"))  # gbk解码


def day3_case3():
    # 列表
    name = ["大佬", "小妹", "老表"]  # 定义列表
    print(name[0])  # 指定取值
    print(name[1:])  # 顺序取值
    print(name[-2:])  # 逆序取值
    print(name[:2])  # 顺序取值
    print(name[:-1])  # 逆序取值
    name.append("老铁")  # 追加值
    print("追加值", name)
    name.insert(2, "大姐")  # 插入值
    print("插入值", name)
    name[1] = "小姐"  # 修改值
    print(name)
    name.remove("小姐")  # 删除值
    print(name)
    del name[0]  # 删除值
    print(name)
    name.pop(1)  # 删除值
    print(name)
    name2 = ["中国", "北京"]
    name.extend(name2)  # 扩展列表
    print(name)
    name3 = name + name2  # 合并列表
    print(name3)
    print("位置", name3.index("中国"))  # 查找列表下标,只能查找第一个
    print("位置", name3.index("中国", 3, 5))  # 查找列表下标,可指定起始位与终止位查找
    print("元素个数", name3.count("中国"))  # 统计元素
    name3.sort()  # 元素排序
    print(name3)
    name3.reverse()  # 元素反转
    print(name3)
    name3.clear()  # 清空元素
    print(name3)
    del name3  # 删除变量
    name = ["大佬", "小妹", "老表"]
    name2 = name.copy()  # 复制一份列表,只有一层列表复制不会被修改
    print("列表1", name, "列表2", name2)
    name[0] = "大姐姐"
    name2[0] = "小姐姐"
    print("列表1", name, "列表2", name2)
    # 列表可能会踩的坑1
    name = ["大佬", ["小妹", "大妹"], "老表"]
    # name2 = copy.copy(name) # 浅复制方式1,复制一份列表,多层列表,第二层列表会被修改
    #name2 = name[:] # 浅复制方式2,复制一份列表,多层列表,第二层列表会被修改
    # name2 = list(name) # 浅复制方式3,复制一份列表,多层列表,第二层列表会被修改
    name2 = name.copy()  # 浅复制方式4,复制一份列表,多层列表,第二层列表会被修改
    # copy()为浅复制,只复制第一层的值,第二层复制了其指针,第二层值改变,因指针指向位置不变,所以name2的值跟着变
    print("列表1", name, "列表2", name2)
    name[1][0] = "大姐姐"
    name2[0] = "小姐姐"
    print("列表1", name, "列表2", name2)
    # 列表可能会踩的坑2
    name = ["大佬", ["小妹", "大妹"], "老表"]
    name2 = name  # 共用一个内存地址,改变name2或name都会改变值
    print("列表1", name, "列表2", name2)
    name2[0] = "小姐姐"  # 因共用一个内存地址,改变name2的值,name的值也会跟着改变
    name[1][0] = "大姐姐"
    print("列表1", name, "列表2", name2)
    # 需要使用深copy解决,函数copy.deepcopy()
    name = ["大佬", ["小妹", "大妹"], "老表"]
    name2 = copy.deepcopy(name)  # 深copy,完全复制一份,不共用地址
    print("列表1", name, "列表2", name2)
    name2[0] = "小姐姐"
    name[1][0] = "大姐姐"
    print("列表1", name, "列表2", name2)
    for i in name:  # 取出列表
        print(name.index(i), i)


if __name__ == '__main__':
    day3_case3()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值