python的四种数据类型:字典、列表、元组、集合

python 复制代码
from typing import Union


# 4种数据类型:字典、列表、元组、集合

# 可选参数:参数既可以是str型,或者int型
def write_csv(filename: str | int) -> str:
    return '你好'


def write_json(filename: Union[str, int]) -> str:
    return '你好'


write_csv(3)
write_csv('Hello')
write_csv(5.0)  # 这种python3.10以后不支持


# 函数的参数类型
def draw1(x):
    pass


# 函数的默认值参数y=10
def draw2(x, y=10):
    pass


# 调用函数的默认值参数时,只需要传一个参数x
# draw2(3)


# *x:不定长参数(作为一个元组参数传递)

# 情况1:draw3(4, 5, 6) 的时候:
# type(x)-- tuple 元组类型
# len(x)--长度是3
# draw3(4, 5, 6) -- 参数4, 5, 6 --代表是一个元组(4, 5, 6)

# 情况2:data = (4, 5, 6) 和 draw3(data) 的时候
# type(x)-- tuple 元组类型
# len(x)--长度是1
# draw3(data) -- 参数data = (4, 5, 6) --代表是一个元组((4, 5, 6),)

# 情况3:data =(4, 5, 6) 和 draw3(*data) 的时候,*data代表把元组的(4, 5, 6)的()去掉
# type(x)-- tuple 元组类型
# len(x)--长度是3
# draw3(*data) -- 参数data = (4, 5, 6) --代表是一个元组(4, 5, 6)

# 情况4:data2 = [7, 8, 9] 和 draw3(*data2) 的时候,*data2代表把元组的[7, 8, 9]的[]去掉
# type(x)-- tuple 元组类型
# len(x)--长度是3
# draw3(*data2) -- 参数data2 = [7, 8, 9] --代表是一个元组(7, 8, 9)
# print(x[0]) -- 取列表 或 元组的第一个元素,根据下标取,结果是7

# 情况5:data3 = [{'username': 'tao1', 'password': '123456'}, {'username': 'tao2', 'password': '654321'},
#          {'username': 'tao3', 'password': '147852'}] 和 draw3(*data3) 的时候,*data3代表把元组的[]去掉
# print(x[0].get('username')) -- 获取元组第一个元素的字典的username,结果tao1

# 元组 不能动态的增加元素或者修改元素,元组不能直接修改,可以把元组转成列表在修改里面的值
# 元组 里面的元素类型可以不一样,可以是任意类型
def draw3(*x):
    # print(type(x))
    # print(len(x))
    print(x)
    # print(x[0])  # 取列表 或 元组的第一个元素,根据下标取
    # print(x[0].get('username'))  # 获取元组第一个元素的字典的username
    pass


# draw3(4, 5, 6)
# data = (4, 5, 6)  # 元组 -- ()
# data2 = [7, 8, 9]  # 列表 -- []
data3 = [{'username': 'tao1', 'password': '123456'}, {'username': 'tao2', 'password': '654321'},
         {'username': 'tao3', 'password': '147852'}]
del data3[-1]  # 删除data3列表的最后一个元素
print(data3)
print(data3 * 4)  # 复制数据,data3的数据复制4次

# 元组 的 元素不能改变,可以先把元组转成列表,修改元素后,再把列表转成元组
# 列表 可以直接改变元素的值
data4 = (4, [7, 8, 9], 6)
data4[1][1] = 10  # 修改元组的第二个元素[7, 8, 9]的第二个值8为10,结果(4, [7, 10, 9], 6)
data4 = list(data4)  # 元组转成列表
data4[2] = 11  # 列表(4, [7, 10, 9], 6)的第三个元素6改为11,结果(4, [7, 10, 9], 11)
data4 = tuple(data4)  # 列表转成元组
# draw3(data)
# draw3(*data)
# draw3(*data2)
draw3(*data3)
draw3(*data4)
相关推荐
学测绘的小杨7 小时前
CompassFusion:一个从 GNSS 到 GNSS/INS 组合导航的独立工程包
python
zzzzzz31013 小时前
当产品经理说这个很简单:我用Python自动化处理奇葩需求的实战指南
python·pycharm·产品经理
雪隐14 小时前
个人电脑玩AI-06让5060 Ti给你打工——不光能画画,Qwen3-TTS还能学人说话,连我老板都信了!
人工智能·后端·python
兵慌码乱1 天前
面向桌面端的资产管理系统分层架构设计与核心模块实现
python·系统架构·sqlite·pyqt5·数据库设计·桌面应用开发·mvc架构
hboot1 天前
AI工程师第三课 - 机器学习基础
python·scikit-learn·kaggle
顾林海1 天前
Agent入门阶段-编程基础-Python:流程控制
python·agent·ai编程
呱呱复呱呱1 天前
Django CBV 源码解读:一个请求是怎么找到你的 get() 方法的
python·django
曲幽2 天前
刚部署的 LibreTranslate 频频翻车?我掏出了 20 年前的 StarDict 词典,用 FastAPI 搭了个本地词典翻译 API
python·fastapi·web·translate·goldendict·libretranslate·stardict·pystardict
荣码2 天前
用Streamlit给AI应用套个界面,10行代码出Web页面
java·python
兵慌码乱2 天前
基于Python+PyQt5+SQLite的药房管理系统实现:事务一致性与界面解耦全流程解析
python·sqlite·信号与槽·pyqt5·数据库设计·桌面应用开发·事务处理