# 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()
Python-day3:三元运算、编码解码、列表
最新推荐文章于 2024-10-03 09:00:56 发布