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

在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.xdnf.cn/news/1560126.html

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

相关文章

多元线性回归:机器学习中的经典模型探讨

引言 多元线性回归是统计学和机器学习中广泛应用的一种回归分析方法。它通过分析多个自变量与因变量之间的关系,帮助我们理解和预测数据的行为。本文将深入探讨多元线性回归的理论背景、数学原理、模型构建、技术细节及其实际应用。 一、多元线性回归的背景与发展…

【杭州马拉松:文化之旅,感受千年古城的魅力】

杭州马拉松,作为国内外知名的马拉松赛事,一直以来都以其独特的魅力和严谨的组织而备受瞩目。今年,杭马将于11月3日再次鸣枪起跑,为跑者们提供一个挑战自我、超越极限的舞台。赛事主办方在今年的比赛中引入了多项创新举措&#xff…

经典蓝牙BLE版本区别:【图文讲解】

蓝牙是一种短距的无线通讯技术,可实现固定设备、移动设备之间的数据交换。一般将蓝牙3.0之前的BR/EDR蓝牙称为传统蓝牙,而将蓝牙4.0规范下的LE蓝牙称为低功耗蓝牙(BLE)。 1:蓝牙4.0 BLE 4.0版本是3.0版本的升级版本&a…

20240904 华为笔试 二叉树消消乐

文章目录 题目解题思路代码BUG 代码最终代码题目 题目描述 给定原始二叉树和参照二叉树(输入的二叉树均为满二叉树,二叉树节点的值范围为[1,1000],二叉树的深度不超过1000),现对原始二叉树和参照二又树中相同层级目值相同的节点进行消除,消除规则为原始二叉树和参照二又树中…

Tetra Pak利乐触摸屏维修beijer北尔触摸屏维修E1151

TetraPak利乐包装机触摸显示屏维修,北尔全系列型号触摸屏修理 维修注意事项: 上电前,应检查负载是否接上或是否正确; 测量电压时,确认档位是否在电压档。要确认仪器仪表的量程应大于测试点的电压; 更换电…

太速科技-607-基于FMC的12收和12发的光纤子卡

基于FMC的12收和12发的光纤子卡 一、板卡概述 本卡是一个FPGA夹层卡(FMC)模块,可提供高达2个CXP模块接口,提供12路收,12路发的光纤通道。每个通道支持10Gbps,通过Aurora协议,可以组成X4&#xff0…

嵌入式学习-线性表Day05-双向链表

嵌入式学习-线性表Day05-双向链表 双向链表 操作函数 1)创建一个空的双向链表 2)双向链表中间插入 3)双向链表尾插 4)双线链表中间删除 5)双线链表删除最后一个节点 双向循环链表 双向链表 //双向链表的节点定义 typedef int dat…

力扣题11~20

题11(中等): 思路: 这种题目第一眼就是双循环,但是肯定不行滴,o(n^2)这种肯定超时,很难接受。 所以要另辟蹊径,我们先用俩指针(标志位)在最左端和最右端&am…

补图、同构图、自补图是什么意思

补图、同构图、自补图的解释网上很多文章写的不是很明确,所以我写一段小笔记记录一下。 同构图 同构图的数学定义为:给定两个图G(V,E)和G(V,E),若存在一个双射函数f:V->V,使得对于任意的顶点u,v∈V,(u,v)∈E当且仅…

日语学习零基础生活日语口语柯桥外语学校|股票用日语怎么说?

在日语中,“股票”可以说: • 株(かぶ) 这是最常用的表达方式,直接表示“股票”。 例如: 株を買う - 买股票 株を売る - 卖股票 • 株式(かぶしき) 这个词也是“股票”的意…

回答网友的一个问题socket_server的问题

今天网上有人讨论在Midas数据库编程中,如果客户端采用Socket连接,服务端运行Borland Socket Server程序,在服务器(一个CPU以上)上运行有问题。俺就找出了这个:

【工具使用】使用Docsify搭建个人文档网站

检查Node.js安装状态 首先,打开命令提示符(CMD),输入以下命令以验证Node.js是否已经安装在您的电脑上: node -v安装Docsify CLI工具 接下来,通过以下命令全局安装Docsify的命令行工具: npm …

布隆过滤器(Bloom Filter)详解

一、引言 在处理大量数据的场景中,我们经常会遇到判断一个元素是否在某个集合中的问题。传统的方法可能是使用 HashMap 等集合将数据保存起来,然后进行比较确定,但在元素很多的情况下,这种方式会非常浪费空间,检索速度…

知识蒸馏介绍

一、知识蒸馏介绍 1.1 概念介绍 知识蒸馏(knowledge distillation)是模型压缩的一种常用的方法,不同于模型压缩中的剪枝和量化,知识蒸馏是通过构建一个轻量化的小模型,利用性能更好的大模型的监督信息,来…

极客兔兔Gee-Cache Day7

protobuf配置: 从 Protobuf Releases 下载最先版本的发布包安装。解压后将解压路径下的 bin 目录 加入到环境变量即可。 如果能正常显示版本,则表示安装成功。 $ protoc --version libprotoc 3.11.2在Golang中使用protobuf,还需要protoc-g…

高效编辑修改文本文档:批量修改文本文档中的特定词汇

在处理大量文本文档时,经常需要批量修改文章的内容,特别是当多个文档里的内容,手动逐个修改不仅效率低下,还容易出错。因此,掌握一些批量修改文本文档内容的技巧变得尤为重要。本文将介绍几种高效编辑文章的方法&#…

基于IMX6UL的EPIT的定时器实验

定时器是最常用的外设,常常需要使用定时器来完成精准的定时功能,I.MX6U 提供了多 种硬件定时器,有些定时器功能非常强大。本章我们从最基本的 EPIT 定时器开始,学习如何配置EPIT 定时器,使其按照给定的时间&#xff0c…

k8s部署学习

8s的架构 一个kubernetes集群主要是由控制节点(master)、工作节点(node)构成,每个节点上都会安装不同的组件 1 master:集群的控制平面,负责集群的决策 ApiServer : 资源操作的唯一入口,接收用户输入的命令,提供认证、…

Java中对象的比较(equals、Comparable、Comparator)

文章目录 一、PriorityQueue中插入对象二、元素的比较 2.1、基本类型的比较2.2、对象比较的问题三、对象的比较 3.1、覆写基类的equals3.2、基于Comparable接口类的比较3.3、基于比较器比较3.4、三种方式对比 一、PriorityQueue中插入对象 前篇我们讲解了优先级队列&#xff0…

qt小练习

制作简易闹钟 头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTimer> //定时器类 #include <QDebug> //信息调试类 #include <QMessageBox> //消息对话框类 #include <QTime> //时间类 #include…