在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)