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)
相关文章:
python list, tuple dict,set的区别 以及**kwargs 的基本用法
在python中, list, tuple, dict, set有什么区别, 主要应用在什么样的场景? 定义: list:链表,有序的项目, 通过索引进行查找,使用方括号”[]”; tuple:元组,元组将多样的对象集合到一起,不能修改,通过索引进行查找, 使用括号”()”; dict:字典,字典是一组键(key)和值(value…...
实用生活英语口语学习成人零基础入门柯桥专业外语培训
“秋裤”的英语表达 首先,秋裤肯定不是autumn pants,chill cool就更离谱了! 最地道的美语说法一定会用到“thermal”这个单词: ▼ “thermal”的意思是“热的、保温的”,由此延伸出“秋裤、保暖内衣”的表达ÿ…...
FLINK SQL数据类型
Flink SQL支持非常完善的数据类型,以满足不同的数据处理需求。以下是对Flink SQL数据类型的详细归纳: 一、原子数据类型 字符串类型 CHAR、CHAR(n):定长字符串,n代表字符的定长,取值范围为[1, 2147483647]。如果不指…...
汇编语言教程:打造你的第一款汇编语言小游戏 汇编语言教程攻略
目录 游戏详细简介 完整代码示例(不少于70行) 如何自学汇编语言游戏开发攻略及功能 游戏详细简介 游戏名称:“太空探险” 游戏简介:这是一款基于x86汇编语言开发的简单2D游戏。在游戏中,玩家扮演一名宇航员&#…...
白色简洁大方公司企业网站源码 WordPress主题2款
WordPress白色简洁大方公司企业网站主题2款 白色整洁风格wordpress主题是一款比较新颖的国际设计范风格 简洁而大方的 WordPress 主题,适合个人博客、企业和工作室用。 完美支持下拉菜单的wordpress企业主题。 wordpress简白企业模板是一款适合企业站以及工作室…...
MinIO分片上传超大文件(纯服务端)
目录 一、MinIO快速搭建1.1、拉取docker镜像1.2、启动docker容器 二、分片上传大文件到MinIO2.1、添加依赖2.2、实现MinioClient2.3、实现分片上传2.3.0、初始化MinioClient2.3.1、准备分片上传2.3.2、分片并上传2.3.2.1、设置分片大小2.3.2.2、分片 2.3.3、分片合并 三、测试3…...
leetcode链表(一)-移除链表元素
题目 t. - 力扣(LeetCode) 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val val 的节点,并返回 新的头节点 。 例1 输入:head [1,2,6,3,4,5,6], val 6 输出:[1,2,3,4,5]…...
python的特殊方法——魔术方法
前言 __init__(self[]) 编辑 __call__(self [, ...]) __getitem__(self, key) __len__(self) __repr__(self) / __str__(self) __add__(self, other) __radd__(self, other) 参考文献 前言 官方定义好的,以两个下划线开头且以两个下划线结尾来命名的方法…...
深入浅出理解TCP三次握手与四次挥手
目录 引言1.为什么需要三次握手?2. 三次握手的过程3. 为什么需要四次挥手?4. 四次挥手的过程5. 为什么挥手需要四次,而握手只需三次?6. 三次握手与四次挥手的时序图7. TIME_WAIT状态的意义8. 总结9.面试时候问到什么是三次握手和四…...
如何在Windows和Linux查看正在监听的端口和绑定的进程
端口(Port)和进程(Process)是计算机网络和操作系统中的重要概念,它们之间有着密切的关系。以下是对这两个概念的详细介绍以及它们之间的关系(附Windows和Linux查看端口和进程的命令): 端口(Por…...
如何用深度神经网络预测潜在消费者
1. 模型架构 本项目采用的是DeepFM模型,其结构结合了FM(因子分解机)与深度神经网络(DNN),实现了低阶与高阶特征交互的有效建模。模型分为以下几层: 1.1 FM部分(因子分解机层&#…...
基于opencv答题卡识别判卷
我们是一个深度学习领域的独立工作室。团队成员有:中科大硕士、纽约大学硕士、浙江大学硕士、华东理工博士等,曾在腾讯、百度、德勤等担任算法工程师/产品经理。全网20多万粉丝,拥有2篇国家级人工智能发明专利。 社区特色:深度实…...
ShardingSphere分库分表产品介绍
目录 一、ShardingSphere分库分表产品介绍 二、客户端分库分表与服务端分库分表 1、ShardingJDBC客户端分库分表 2、ShardingProxy服务端分库分表 3、ShardingSphere混合部署架构 三、分库分表,能不分就不分! 1、为什么要分库分表? 2、…...
Java经典面试题-多线程打印
threadsynchronized 就好像一个圆圈,A->B->C->A。。。。。 synchronized能够保证多个线程进入实,只用一个线程能进入。 /**多线程交替打印* */ public class Task {private final Object lock new Object();private int count 0;public st…...
FireFox简单设置设置
文章目录 一 设置不显示标签页1原来的样子2新的样子3操作方法 二 设置竖直标签页栏1 效果图2 设置方法 三 设置firefox不提醒更新 一 设置不显示标签页 1原来的样子 2新的样子 3操作方法 地址栏输入 about:config搜索icon,双击选项列表中browserchrome.site icons的值&#…...
Sollong手机——一站式Web3生态解决方案
从定义上讲,Web3公司也属于互联网公司,不过与传统互联网公司相比,他们有一个很明显的特征:他们不断尝试做去中心化的事,一步步将数据和金融的控制权从美联储(央行和金融机构)、苹果(…...
《重生到现代之从零开始的数据结构生活》—— 顺序表1
线性表 线性表:是n个具有相同特性的数据元素的有限序列。 线性表是⼀种在实际中⼴泛使 ⽤的 数据结构,常⻅的线性表有顺序表、链表、栈、队列、字符串等等 线性表在逻辑上是线性结构,也就说是连续的⼀条直线。但是在物理结构上并不⼀定是连…...
2本书让你轻松入门大模型!《大模型入门:技术原理与实战应用》+《自然语言处理:大模型理论与实践》
随着大模型技术的不断完善和普及,我们将进入一个由数据驱动、智能辅助的全新工作模式和生活模式。个人和企业将能够利用大模型来降本增效,并创造全新的用户体验。 人工智能是人类探索未来的重要领域之一,以GPT为代表的大模型应用一经推出在短…...
【JDK17 | 1】Java 17 深入剖析:新特性与变革
引言 Java 17 是 Oracle 发布的一个重要版本,它不仅是一个长期支持(LTS)版本,还引入了许多新的特性和改进,为开发者提供了更强大的工具和更优雅的编程体验。在本专栏的文章中,我们将对 Java 17 的新特性进行深入剖析,帮助开发者更好地理解和利用这一版本。 1. 新特性概述…...
strtok
strtok函数原型 char *strtok(conset char *str,conset char *dst); 功能: 将字符串分割成一个一个片段 当strtok()在参数str的字符串中发现参数dst中包含的分割字符时,则会将该字符改为\0字符 当连续出现…...
用Python+WeChatOpenDevTools搞定微信小程序数据抓取:以‘六六找房’为例(附完整源码)
Python逆向解析微信小程序数据实战:以租房平台为例 微信小程序因其便捷性已成为许多服务的主要入口,但数据获取却常让开发者头疼。不同于传统网页爬虫,小程序的数据接口往往经过加密处理,常规请求难以直接获取有效信息。本文将分享…...
Tailwind CSS在Vue3+Vite项目中的实战应用:从零到响应式按钮
Tailwind CSS在Vue3Vite项目中的实战应用:从零到响应式按钮 如果你正在使用Vue3和Vite构建现代Web应用,却对传统CSS的维护成本感到头疼,那么Tailwind CSS可能会成为你的新宠。这个实用优先的CSS框架彻底改变了我们编写样式的方式——不再需要…...
别再写重复代码了!用WPF Behavior封装一个可复用的鼠标拖拽缩放控件(附完整源码)
用WPF Behavior打造高复用鼠标拖拽缩放控件:从原理到实战封装 在WPF企业级应用开发中,交互控件的重复开发是效率杀手。想象一下:当产品经理要求为项目中的图表、图片预览器和自定义控件都添加相似的拖拽缩放功能时,你是选择在每个…...
VisionPro相机控制进阶:用C#实现拍照、实时流与图像保存的完整工作流
VisionPro相机控制进阶:用C#构建工业级图像采集工作流 在工业自动化领域,稳定可靠的图像采集系统是质量检测、尺寸测量和缺陷识别的基础。VisionPro作为工业视觉领域的标杆工具,配合C#强大的开发能力,可以构建出高性能的相机控制…...
别再死记硬背了!用Python脚本自动解析蓝牙BR/EDR/BLE测试报告(附代码)
用Python解放双手:自动化解析蓝牙测试报告的实战指南 每天面对堆积如山的蓝牙测试报告,你是否已经厌倦了手动整理数据的繁琐?当测试工程师们还在为Excel公式抓耳挠腮时,Python早已准备好了一套自动化解决方案。本文将带你从零开始…...
Docker构建速度太慢?试试替换Debian基础镜像的APT源为阿里云(附多版本Dockerfile写法)
加速Docker构建:Debian基础镜像APT源优化全指南 每次等待Docker镜像构建完成时,看着缓慢下载的进度条,是不是感觉时间仿佛被拉长了?特别是在国内网络环境下,从官方Debian源拉取软件包的速度简直让人抓狂。我曾经的一个…...
PyTorch分布式训练:原理与实践
PyTorch分布式训练:原理与实践 1. 背景与意义 随着深度学习模型的不断增大和数据集规模的持续增长,单GPU训练已经无法满足需求。分布式训练成为训练大型模型的必要手段,它可以显著缩短训练时间,提高模型性能。PyTorch提供了强大的…...
追赶30名
1.单词2.翻译生成式人工智能是指能够生成与训练数据相似的新数据的模型。常见的生成模型包括生成对抗网络(GAN)和扩散模型。这些模型已成功应用于图像生成、文本创作和音频合成等领域。在GAN框架中,生成器与判别器相互对抗,从而不…...
PyTorch 2.5镜像使用指南:从环境搭建到模型训练完整流程
PyTorch 2.5镜像使用指南:从环境搭建到模型训练完整流程 1. 镜像概述与环境准备 PyTorch 2.5镜像是一个预配置的深度学习开发环境,集成了PyTorch框架和CUDA工具包,支持GPU加速计算。这个开箱即用的解决方案能帮助开发者快速搭建AI开发环境&…...
GPU友好型部署!Nanbeige 4.1-3B Streamlit WebUI显存优化实测教程
GPU友好型部署!Nanbeige 4.1-3B Streamlit WebUI显存优化实测教程 想在自己的电脑上跑一个好看又好用的AI对话应用,是不是总被复杂的部署步骤和巨大的显存占用劝退?今天,我就带你实测一个专为Nanbeige 4.1-3B模型打造的Streamlit…...
