python list, tuple dict,set的区别 以及**kwargs 的基本用法

news2024/11/26 9:44:00

在python中, list, tuple, dict, set有什么区别, 主要应用在什么样的场景?

定义:

list:链表,有序的项目, 通过索引进行查找,使用方括号”[]”;

tuple:元组,元组将多样的对象集合到一起,不能修改,通过索引进行查找, 使用括号”()”;

dict:字典,字典是一组键(key)和值(value)的组合,通过键(key)进行查找,没有顺序, 使用大括号”{}”;

set:集合,无序,元素只出现一次, 自动去重,使用”set([])”

应用场景:

list, 简单的数据集合,可以使用索引;

tuple, 把一些数据当做一个整体去使用,不能修改;

dict,使用键值和值进行关联的数据;

set,数据只出现一次,只关心数据是否出现, 不关心其位置;

注意:

元组能存储多个不同类型的数据,且是有序的。但它是不可变的,因此不能进行修改、删除或添加元素的操作。

列表和元组非常相似,唯一的不同是列表的元素是可以修改的。

字典的元素以键值对(key-value)的形式保存,是无序的。

和列表一样,字典可以修改。

定义方式:

定义元组、列表和字典的方式如图所示,分别使用小括号 () 、方括号 [] 和花括号 {} 。

三种数据结构的每一项元素都是由逗号分隔开。

访问多个元素

对于元组和列表来说,除了访问单个元素外,还可以使用切片来截取多个连续的元素。

切片需要使用冒号来分隔切片开始的位置和切片终止的位置。

同时,遵循“左闭右开”原则,就是取左边的数据,不取右边的数据。
 

切片时,开始位置和结束位置的数字,还有三种填写情况。

1. 只填写结束位置的数字:默认从第一个元素开始切片。

2. 只填写开始位置的数字:默认从开始位置切片,取到最后一个元素。

3. 两侧数字都不填写:取列表中的所有元素。

修改元素

对列表和字典进行修改,可以使用列表的索引或字典的键,访问到需要修改的元素后,直接重新赋值即可。

numbers = ["one",  "two",  "two" , "four",  "five"]
numbers[2] = "three"
print(numbers)

列表里添加元素

往列表里添加内容有两种方式:

1. 如果想在列表的末尾增加一个元素,可以使用 append() 语句,将想要追加的内容放入append() 语句的括号内即可。

2. 如果想在列表的任意位置添加元素,则可以使用 insert() 语句,需要依次传入:插入的元素位置和要插入的元素。

字典里添加元素

对于字典,添加新元素的方式是直接指定一个新的键,然后对它进行赋值。

删除元素

从列表中删除一个元素时,我们使用pop()功能,通过这个元素的索引,来进行删除。

在字典中,依旧使用pop()功能,通过这个元素的键,来进行删除。

in运算符

想要快速判断列表或者元组中是否有某一个元素,可以使用in运算符。

in运算符的左边是要查找的元素,右边是定义的元组或列表。

in运算的结果,是一个布尔值(True/False)。

同样,当我们不知道字典有哪些键的时候,也可以通过in运算来检查字典是否包含某个键。

加法

列表和元组支持加法运算,加法的和就是两个列表或元组所包含的元素首尾相接。需要注意的是,列表只能和列表相加;元组只能和元组相加;

a_tuple = ('Python' , 20, -10.2)
print(a_tuple)
print("\n")
b_tuple = (127, 'Java', 'Test', True)
print(b_tuple)
print("\n")
print(a_tuple + b_tuple  )

其结果如下:

 乘法

列表和元组可以和整数执行乘法运算,列表和元组乘法的作用就是把列表或元组中的元素重复N次,并且首尾相接。

下面的代码演示了列表和元组的乘法。

a_tuple = ('Python编程思想' , 20)
# 执行乘法
mul_tuple = a_tuple * 3
# ('Python编程思想', 20, 'Python编程思想', 20, 'Python编程思想', 20)
print("\n")
print(mul_tuple)
a_list = [12, '公众号:极客起源', 4]
mul_list = a_list * 4
# [12, '公众号:极客起源', 4, 12, '公众号:极客起源', 4]
print("\n")
print(mul_list)

in 运算符

in运算符用于判断列表或元组是否包含某个元素,例子代码如下:

a_tuple = ('Python' , 20, -11.5)
print(20 in a_tuple) 
# True
print(1.2 in a_tuple) 
# False
print('Python' not in a_tuple) 
# False

**kwargs 的基本用法

**kwargs 解析的三种方法:

通过是用内置函数 vars()。

通过使用**运算符。

通过使用get()方法。

**kwargs 主要用于在函数定义中收集所有未被显式命名的关键字参数。在函数内部,kwargs 是一个字典,其中包含了所有传递进来的关键字参数及其对应的值。

示例:
 

def my_function(**kwargs):  
    for key, value in kwargs.items():  
        print(f"{key} = {value}")  
  
# 调用函数,传递不同的关键字参数  
my_function(name="Alice", age=30, city="New York")

在 Python 中使用 kwargs

如果您有一个接受两个关键字参数的函数,您可以像这样访问它们:

def my_func(**kwargs) :
    arg1=kwargs['arg1']
    arg2=kwargs['arg2']

您还可以使用 kwargs 为函数参数设置默认值。 例如,如果你有一个带有可选关键字参数的函数,你可以像这样设置一个默认值:

def my_func(**kwargs):
    arg1 = kwargs.get('arg1','default_value')

如果 arg1 关键字参数未传递给函数,则此函数会将 arg1 设置为 default_value。

kwargs Python中**运算符解析

解析 kwargs 的另一种方法是使用 ** 运算符。 此运算符将字典解压缩为关键字参数

此方法比使用 vars() 更明确,可以帮助避免潜在的类型转换错误。

def intro(**data):
    for key ,value in data.items():
        print("{} is {}".format(key,value))
intro(firname = "aaaa", last="bbbbb", age=12)
print("\n")
intro(firname = "aaaa", last="bbbbb",email="1073369052@qq.com" ,con="china",age=12,phone=13)

kwargs 在 Python 中使用 get() 方法进行解析

def test(farg,**kwargs):
    print("formal arg",farg)
    for key in kwargs:
        print("keyword arg: %s: %s " % (key,kwargs[key]))
test(farg=1,myarg2=2,myarg3=3)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2204956.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MacOS编译和安装Poco库的方法

1.从官网git下载最新的poco源代码 在/usr/local路径下创建Poco文件夹,克隆Poco源代码 sudo git clone -b poco-1.13.3-release https://github.com/pocoproject/poco.git2.等了一会后,报错啦!!! error: RPC failed…

耳机座接口会被TYPE-C取代吗?

耳机座接口,即传统的3.5mm耳机插孔,一直以来都是音频设备的标准配置。然而,随着科技的发展和用户需求的变化,TYPE-C接口逐渐崭露头角,成为许多设备的主流选择。这一趋势引发了一个重要问题:耳机座接口会被T…

前缀和算法——优选算法

个人主页:敲上瘾-CSDN博客 个人专栏:游戏、数据结构、c语言基础、c学习、算法 一、什么是前缀和? 前缀和是指从数组的起始位置到某一位置(或矩阵的某个区域)的所有元素的和。这种算法通过预处理数组或矩阵,…

[Git] 演示回退命令reset的三种模式soft、hard、mixed详解

前言 目录 git reset soft hard mixed git reset --soft commitId git reset --hard commitId git reset --mixed commitId git reset soft 移动本地库HEAD指针 hard 移动本地库HEAD指针 重置暂存区 重置工作区 mixed 移动本地库HEAD指针重置暂存区 执行reset命令后…

秒杀|基于springBoot的秒杀系统设计与实现(附项目源码+论文+数据库)

私信或留言即免费送开题报告和任务书(可指定任意题目) 摘要 社会发展日新月异,用计算机应用实现数据管理功能已经算是很完善的了,但是随着移动互联网的到来,处理信息不再受制于地理位置的限制,处理信息及…

游戏行业八大趋势解说(上)

今天,来看看游戏行业八大趋势~ 1. 跨平台发行 2. 单人游戏规模缩小 3. 移动应用生态系统开放 4. 社区管理、抢先体验成为主流 5. 免费游戏的时间占有率显著提高 6. 新AAA游戏面临挑战 7. 生成式AI的影响未完全显现 8. 新世代成为主流,用户生成内…

35岁零基础能转型AI大模型吗?来得及不?

以下从3个方面帮大家分析: 35岁转行会不会太晚?零基础学习AI大模型开发能不能学会?AI大模型开发行业前景如何,学完后能不能找到好工作? 一、35岁转行会不会太晚? 35岁正处于人生的黄金时期,拥…

VMWare vsphere ESXi 6.7在线升级至7.0.3

本文记录了VMWare vsphere ESXi 6.7在线升级至7.0.3的过程 一、当前环境 1、ESXi当前版本:6.7.0, 17499825 2、VCenter当前版本:7.0.3 二、导入升级包并新建基准 1、新版本ISO信息 VMware-VMvisor-Installer-7.0U3n-21930508.x86_64.iso【MD5SUM: 0c…

Python酷库之旅-第三方库Pandas(143)

目录 一、用法精讲 646、pandas.Timestamp.is_quarter_start属性 646-1、语法 646-2、参数 646-3、功能 646-4、返回值 646-5、说明 646-6、用法 646-6-1、数据准备 646-6-2、代码示例 646-6-3、结果输出 647、pandas.Timestamp.is_year_end属性 647-1、语法 647…

马斯克的Cybercab首秀!没有方向盘和踏板,26年量产,特斯拉这次又玩大的了

家人们!今天是特斯卡开“We Robot”发布会的日子,从早上十点奶茶就搬一个小板凳蹲着了! 这次发布会公开了没有方向盘、没有倒车镜、没有踏板制动器的自动驾驶出租车和Optimus机器人的最新进展,还是很震撼的~奶茶带大家…

Spring Boot 应用开发:入门与实战

Spring Boot 应用开发:入门与实战 引言 Spring Boot 是 Spring 框架的一个子项目,旨在简化 Spring 应用的配置和开发。它通过自动配置和嵌入式服务器,极大地简化了 Java 企业级应用的开发。本文将详细介绍 Spring Boot 的核心概念&#xff…

linux 搭建sentinel

1.下载 linux执行下面的命令下载包 wget https://github.com/alibaba/Sentinel/releases/download/1.8.6/sentinel-dashboard-1.8.6.jar2.启动 nohup java -Dserver.port9090 -Dcsp.sentinel.dashboard.serverlocalhost:9090 -Dproject.namesentinel-dashboard -jar sentin…

Docker镜像制作实战实现淘宝网站部署

登录docker环境nohup /usr/local/docker/dockerd -H 0.0.0.0:2375 -H unix:///var/run/docker.sock & 创建仓库源,上传daemon.json,内容为镜像仓库地址 重启docker服务,加载镜像源 下载nginx镜像 也可通过已知镜像地址下载命令如下 下载…

数据结构_day1

目录 大纲 1.数据结构基础知识 1.1 什么是数据结构 1.2 数据 1.3 逻辑结构 1.4 存储结构 1.4.1 顺序存储 1.4.2 链式存储 1.4.3 索引存储结构 1.4.4 散列存储 1.5 操作 2.算法基础知识 2.1 什么是算法 2.2 算法的设计 2.3 算法的特性 2.4 评价算法的好坏 大纲 数据结构、算法(理…

AI绘画ComfyUI 也可以有插件市场!

前言 上文我们介绍了 ComfyUI 的本地部署和基本使用。其中的插件安装,小伙伴们是不是觉得还是有点麻烦的,ComfyUI 有没有类似 WebUI 的插件管理功能呢,其实是有的,而且比 WebUI 的插件管理功能更强大。 今天我们就主要来介绍一下…

【目标检测】常见机械零件数据集5900张5类VOC+YOLO

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):5913 标注数量(xml文件个数):5913 标注数量(txt文件个数):5913 标注…

大数据面试-笔试SQL

一个表table: c_id u_id score;用SQL计算每个班级top5学生的平均分(腾讯) select class_id,avg(score) as score_avg from (select *,row_number() over(partition by class_id order by score desc) as score_rank from table ) t1 where t…

<<迷雾>> 第10章 用机器做一连串的加法(7)--装载数据的过程及相加过程 示例电路

info::操作说明 此电路属于将前述电路的 控制器 部分单独独立出来. 操作过程与前述类似, 参考前一个示例的操作步骤. primary::在线交互操作链接 https://cc.xiaogd.net/?startCircuitLinkhttps://book.xiaogd.net/cyjsjdmw-examples/assets/circuit/cyjsjdmw-ch10-11-process…

electron-vite_4使用WebContentsView快速集成已有项目

Web 嵌入官方推荐使用WebContentsView;集成也比较简单,但还是需要你单独写点东西; src/main/index.ts进行修改 import { app, shell, BrowserWindow, ipcMain, nativeImage, WebContentsView, dialog } from electron;function createWindo…